Module: IdempotentTransaction
- Defined in:
- lib/idempotent_transaction.rb,
lib/idempotent_transaction/version.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- VERSION =
'0.2.0'.freeze
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.included(base) ⇒ Object
4 5 6 |
# File 'lib/idempotent_transaction.rb', line 4 def self.included(base) base.extend(ClassMethods) end |
Instance Method Details
#executed? ⇒ Boolean
22 23 24 |
# File 'lib/idempotent_transaction.rb', line 22 def executed? @executed ||= false end |
#finished? ⇒ Boolean
18 19 20 |
# File 'lib/idempotent_transaction.rb', line 18 def finished? @finished ||= record_exist? end |
#idempotent_transaction(force: false) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/idempotent_transaction.rb', line 26 def idempotent_transaction(force: false) self.class.transaction do yield.tap do begin save! rescue ActiveRecord::RecordNotUnique raise ActiveRecord::Rollback unless force end @finished = true @executed = true end end end |