module Sequel::Postgres::PgAdvisoryLocking
Public Instance Methods
try_advisory_lock(id, opts = {}, &block)
click to toggle source
# File lib/sequel/extensions/pg_advisory_locking.rb, line 14 def try_advisory_lock(id, opts = {}, &block) exclusive = opts.fetch(:exclusive, true) lockfn = exclusive ? :pg_try_advisory_lock : :pg_try_advisory_lock_shared unlockfn = exclusive ? :pg_advisory_unlock : :pg_advisory_unlock_shared yield_with_advisory_lock(id, lockfn, unlockfn, &block) end
with_advisory_lock(id, opts = {}, &block)
click to toggle source
# File lib/sequel/extensions/pg_advisory_locking.rb, line 7 def with_advisory_lock(id, opts = {}, &block) exclusive = opts.fetch(:exclusive, true) lockfn = exclusive ? :pg_advisory_lock : :pg_advisory_lock_shared unlockfn = exclusive ? :pg_advisory_unlock : :pg_advisory_unlock_shared yield_with_advisory_lock(id, lockfn, unlockfn, &block) end
Private Instance Methods
yield_with_advisory_lock(id, lockfn, unlockfn) { || ... }
click to toggle source
# File lib/sequel/extensions/pg_advisory_locking.rb, line 23 def yield_with_advisory_lock(id, lockfn, unlockfn, &block) if get(Sequel.function(lockfn, id)) begin yield ensure get(Sequel.function(unlockfn, id)) end end end