Module: AssOle::Snippets::Shared::Transaction

Defined in:
lib/ass_ole/snippets/shared.rb

Overview

Do in transaction wrapper

Instance Method Summary collapse

Instance Method Details

#do_in_transaction(&block) ⇒ Object

Raises:

  • (RuntimeError)

    if nested transaction



91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/ass_ole/snippets/shared.rb', line 91

def do_in_transaction(&block)
  fail ArgumentError, 'Block require' unless block_given?
  fail 'Nested transaction is mindless in 1C runtime' if\
    transactionActive
  begin
    beginTransAction
    r = instance_eval(&block)
    commitTransAction
    r
  rescue StandardError => e
    rollBackTransaction
    raise e
  end
end