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

Returns:

  • (Boolean)


22
23
24
# File 'lib/idempotent_transaction.rb', line 22

def executed?
  @executed ||= false
end

#finished?Boolean

Returns:

  • (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