Class: DeploymentTask::LockAdapters::PostgresqlAdapter

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

Instance Method Summary collapse

Methods inherited from Base

detect_database_adapter, resolve, #with_lock

Instance Method Details

#acquire(version) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/deployment_task/lock_adapters/postgresql_adapter.rb', line 8

def acquire(version)
  acquired = connection.select_value(
    "SELECT pg_try_advisory_lock(#{advisory_lock_id(version)})"
  )
  unless acquired
    raise LockNotAcquiredError,
      "Could not acquire lock for task #{version}. " \
      "Another process may be executing it."
  end
end

#release(version) ⇒ Object



19
20
21
22
23
# File 'lib/deployment_task/lock_adapters/postgresql_adapter.rb', line 19

def release(version)
  connection.select_value(
    "SELECT pg_advisory_unlock(#{advisory_lock_id(version)})"
  )
end