decko-commons/decko

View on GitHub
mod/content/set/abstract/lock.rb

Summary

Maintainability
A
0 mins
Test Coverage
def lock
  was_already_locked = locked?
  return if was_already_locked

  Card::Auth.as_bot do
    lock!
    yield
  end
ensure
  unlock! unless was_already_locked
end

def lock_cache_key
  "UPDATE-LOCK:#{key}"
end

def locked?
  Card.cache.read lock_cache_key
end

def lock!
  Card.cache.write lock_cache_key, true
end

def unlock!
  Card.cache.write lock_cache_key, false
end