class PactBroker::DB::AdvisoryLock
Public Class Methods
Source
# File lib/pact_broker/db/advisory_lock.rb, line 20 def initialize(database_connection, name, type = :pg_try_advisory_lock) @database_connection = database_connection @name = name @type = type @lock_obtained = false register_advisory_lock if postgres? end
Public Instance Methods
Source
# File lib/pact_broker/db/advisory_lock.rb, line 42 def lock_obtained? @lock_obtained end
Source
# File lib/pact_broker/db/advisory_lock.rb, line 28 def with_lock if postgres? @database_connection.with_advisory_lock(@name) do logger.debug("Lock #{@name} obtained") @lock_obtained = true yield end else logger.warn("Executing block without lock as this is not a Postgres database") @lock_obtained = true yield end end
Private Instance Methods
Source
# File lib/pact_broker/db/advisory_lock.rb, line 48 def postgres? @database_connection.adapter_scheme.to_s =~ /postgres/ end
Source
# File lib/pact_broker/db/advisory_lock.rb, line 52 def register_advisory_lock @database_connection.extension :pg_advisory_lock @database_connection.register_advisory_lock(@name, @type) end