Module: Mimi::DB::Lock
- Includes:
- Core::Module
- Defined in:
- lib/mimi/db/lock.rb,
lib/mimi/db/lock/mysql_lock.rb,
lib/mimi/db/lock/sqlite_lock.rb,
lib/mimi/db/lock/postgresql_lock.rb
Defined Under Namespace
Classes: MysqlLock, NotAvailable, PostgresqlLock, SqliteLock
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
22
23
24
25
|
# File 'lib/mimi/db/lock.rb', line 22
def self.configure(*)
super
Mimi::DB.extend(self)
end
|
.module_path ⇒ Object
18
19
20
|
# File 'lib/mimi/db/lock.rb', line 18
def self.module_path
Pathname.new(__dir__).join('lock')
end
|
.start ⇒ Object
27
28
29
30
31
32
|
# File 'lib/mimi/db/lock.rb', line 27
def self.start
require_relative 'lock/postgresql_lock'
require_relative 'lock/mysql_lock'
require_relative 'lock/sqlite_lock'
super
end
|
Instance Method Details
#lock(name, opts = {}, &block) ⇒ true, Falsey
44
45
46
47
48
49
|
# File 'lib/mimi/db/lock.rb', line 44
def lock(name, opts = {}, &block)
lock!(name, opts, &block)
true
rescue NotAvailable
nil
end
|
#lock!(name, opts = {}, &block) ⇒ Object
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/mimi/db/lock.rb', line 51
def lock!(name, opts = {}, &block)
raise 'Not implemented'
opts = Mimi::DB::Lock.module_options[:default_lock_options].merge(opts.dup)
adapter_name = ActiveRecord::Base.connection.adapter_name.downcase.to_sym
case adapter_name
when :postgresql, :empostgresql, :postgis
Mimi::DB::Lock::PostgresqlLock.new(name, opts).execute(&block)
when :mysql, :mysql2
Mimi::DB::Lock::MysqlLock.new(name, opts).execute(&block)
when :sqlite
Mimi::DB::Lock::SqliteLock.new(name, opts).execute(&block)
else
raise "Named locks not supported by the adapter: #{adapter_name}"
end
end
|