Module: Neo4j::Transaction
Defined Under Namespace
Modules: Instance
Instance Method Summary collapse
- #current ⇒ Neo4j::Transaction
- #new(current = Session.current!) ⇒ Neo4j::Transaction::Instance
- #register(tx) ⇒ Object
-
#run(run_in_tx = true) ⇒ Object
Runs the given block in a new transaction.
- #unregister(tx) ⇒ Object
- #unregister_current ⇒ Object
Instance Method Details
#current ⇒ Neo4j::Transaction
99 100 101 |
# File 'lib/neo4j/transaction.rb', line 99 def current Thread.current[:neo4j_curr_tx] end |
#new(current = Session.current!) ⇒ Neo4j::Transaction::Instance
70 71 72 |
# File 'lib/neo4j/transaction.rb', line 70 def new(current = Session.current!) current.begin_tx end |
#register(tx) ⇒ Object
109 110 111 112 113 |
# File 'lib/neo4j/transaction.rb', line 109 def register(tx) # we don't support running more then one transaction per thread fail 'Already running a transaction' if current Thread.current[:neo4j_curr_tx] = tx end |
#run(run_in_tx = true) ⇒ Object
Runs the given block in a new transaction. @@yield [Neo4j::Transaction::Instance]
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/neo4j/transaction.rb', line 77 def run(run_in_tx = true) fail ArgumentError, 'Expected a block to run in Transaction.run' unless block_given? return yield(nil) unless run_in_tx begin tx = Neo4j::Transaction.new ret = yield tx rescue Exception => e # rubocop:disable Lint/RescueException if e.respond_to?(:cause) && e.cause.respond_to?(:print_stack_trace) puts "Java Exception in a transaction, cause: #{e.cause}" e.cause.print_stack_trace end tx.mark_failed unless tx.nil? raise ensure tx.close unless tx.nil? end ret end |
#unregister(tx) ⇒ Object
104 105 106 |
# File 'lib/neo4j/transaction.rb', line 104 def unregister(tx) Thread.current[:neo4j_curr_tx] = nil if tx == Thread.current[:neo4j_curr_tx] end |
#unregister_current ⇒ Object
116 117 118 |
# File 'lib/neo4j/transaction.rb', line 116 def unregister_current Thread.current[:neo4j_curr_tx] = nil end |