Class: DeploymentTask::LockAdapters::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/deployment_task/lock_adapters/base.rb

Direct Known Subclasses

MysqlAdapter, NoneAdapter, PostgresqlAdapter

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.detect_database_adapterObject



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/deployment_task/lock_adapters/base.rb', line 17

def self.detect_database_adapter
  adapter_name = DeploymentTask::Record.connection.adapter_name.downcase
  case adapter_name
  when /mysql/
    MysqlAdapter.new
  when /postgresql/, /postgis/
    PostgresqlAdapter.new
  else
    # SQLite and unknown adapters fall back to no-op
    NoneAdapter.new
  end
end

.resolve(adapter_setting) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/deployment_task/lock_adapters/base.rb', line 6

def self.resolve(adapter_setting)
  case adapter_setting
  when :none
    NoneAdapter.new
  when :database
    detect_database_adapter
  else
    raise ArgumentError, "Unknown lock_adapter: #{adapter_setting}"
  end
end

Instance Method Details

#acquire(version) ⇒ Object

Raises:

  • (NotImplementedError)


37
38
39
# File 'lib/deployment_task/lock_adapters/base.rb', line 37

def acquire(version)
  raise NotImplementedError
end

#release(version) ⇒ Object

Raises:

  • (NotImplementedError)


41
42
43
# File 'lib/deployment_task/lock_adapters/base.rb', line 41

def release(version)
  raise NotImplementedError
end

#with_lock(version) ⇒ Object



30
31
32
33
34
35
# File 'lib/deployment_task/lock_adapters/base.rb', line 30

def with_lock(version)
  acquire(version)
  yield
ensure
  release(version)
end