module IdempotentBlock
Constants
- VERSION
Public Class Methods
included(base)
click to toggle source
# File lib/idempotent_block.rb, line 4 def self.included(base) base.extend(ClassMethods) end
Public Instance Methods
executed?()
click to toggle source
# File lib/idempotent_block.rb, line 22 def executed? @executed ||= false end
finished?()
click to toggle source
# File lib/idempotent_block.rb, line 18 def finished? @finished ||= record_exist? end
start(force: false) { || ... }
click to toggle source
# File lib/idempotent_block.rb, line 26 def start(force: false) self.class.transaction do yield begin save! rescue ActiveRecord::RecordNotUnique raise ActiveRecord::Rollback unless force end @finished = true @executed = true end end
Private Instance Methods
record_exist?()
click to toggle source
# File lib/idempotent_block.rb, line 43 def record_exist? self.class.exists?(self.class.idempotent_columns.map { |k| [k, send(k)] }.to_h) end