Module: Sequel::TestAfterCommit
- Defined in:
- lib/sequel_test_after_commit/version.rb,
lib/sequel/extensions/test_after_commit.rb
Constant Summary collapse
- VERSION =
'0.0.4'
Instance Method Summary collapse
- #after_commit(opts = OPTS, &block) ⇒ Object
- #after_rollback(opts = OPTS, &block) ⇒ Object
-
#after_transaction_commit(conn) ⇒ Object
The methods that usually trigger the callbacks become no-ops.
- #after_transaction_rollback(conn) ⇒ Object
- #remove_transaction(conn, committed) ⇒ Object
Instance Method Details
#after_commit(opts = OPTS, &block) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/sequel/extensions/test_after_commit.rb', line 29 def after_commit(opts=OPTS, &block) raise Error, "must provide block to after_commit" unless block synchronize(opts[:server]) do |conn| if (h = _trans(conn)) && h[:in_after_commit].nil? raise Error, "cannot call after_commit in a prepared transaction" if h[:prepare] level = savepoint_level(conn) hooks = h[:after_commit] ||= {} hooks[level] ||= [] hooks[level] << block else yield end end end |
#after_rollback(opts = OPTS, &block) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/sequel/extensions/test_after_commit.rb', line 44 def after_rollback(opts=OPTS, &block) raise Error, "must provide block to after_rollback" unless block synchronize(opts[:server]) do |conn| if h = _trans(conn) raise Error, "cannot call after_rollback in a prepared transaction" if h[:prepare] level = savepoint_level(conn) hooks = h[:after_rollback] ||= {} hooks[level] ||= [] hooks[level] << block end end end |
#after_transaction_commit(conn) ⇒ Object
The methods that usually trigger the callbacks become no-ops.
58 |
# File 'lib/sequel/extensions/test_after_commit.rb', line 58 def after_transaction_commit(conn); end |
#after_transaction_rollback(conn) ⇒ Object
59 |
# File 'lib/sequel/extensions/test_after_commit.rb', line 59 def after_transaction_rollback(conn); end |
#remove_transaction(conn, committed) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/sequel/extensions/test_after_commit.rb', line 3 def remove_transaction(conn, committed) level = savepoint_level(conn) if h = _trans(conn) begin h[:in_after_commit] = true if after_commit = h[:after_commit] if hooks = after_commit.delete(level) hooks.each(&:call) if committed end end if after_rollback = h[:after_rollback] if hooks = after_rollback.delete(level) hooks.each(&:call) unless committed end end ensure h.delete(:in_after_commit) end end ensure super end |