Method: Yapper::DB::Transaction#run

Defined in:
lib/yapper/db.rb

#run(&block) ⇒ Object



234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# File 'lib/yapper/db.rb', line 234

def run(&block)
  result = nil
  txn_proc = proc do |_txn|
    @txn = _txn
    begin
      result = block.call(@txn)
    rescue Exception => e
      @txn.rollback
      result = e
    end
  end
  @db.connection.readWriteWithBlock(txn_proc)

  raise result if result.is_a?(Exception)
  result
end