demarches-normaliennes/app/controllers/concerns/lockable_concern.rb

19 lines
293 B
Ruby
Raw Normal View History

# frozen_string_literal: true
module LockableConcern
extend ActiveSupport::Concern
included do
def lock_action(key)
lock = Kredis.flag(key)
head :locked and return if lock.marked?
lock.mark(expires_in: 10.seconds)
yield
lock.remove
end
end
end