Class: Txnap::Subscribers::TransactionSubscriber
- Inherits:
-
Object
- Object
- Txnap::Subscribers::TransactionSubscriber
- Defined in:
- lib/txnap/subscribers/transaction_subscriber.rb
Class Method Summary collapse
Instance Method Summary collapse
- #finish(_name, _start, _finish, _id, payload) ⇒ Object
- #start(_name, _start, _finish, _id, payload) ⇒ Object
Class Method Details
.install ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/txnap/subscribers/transaction_subscriber.rb', line 7 def install @subscriptions ||= begin subscriber = new [ ActiveSupport::Notifications.monotonic_subscribe("start_transaction.active_record") do |*args| subscriber.start(*args) end, ActiveSupport::Notifications.monotonic_subscribe("transaction.active_record") do |*args| subscriber.finish(*args) end ] end end |
Instance Method Details
#finish(_name, _start, _finish, _id, payload) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/txnap/subscribers/transaction_subscriber.rb', line 31 def finish(_name, _start, _finish, _id, payload) connection = payload[:connection] return unless connection trace = Txnap.registry.finalize(connection, payload[:transaction]) Txnap.notify(trace&.to_report(payload[:outcome])) rescue IdleGapDetected raise rescue => error Txnap.warn("transaction finish subscriber failed: #{error.class}: #{error.}") end |
#start(_name, _start, _finish, _id, payload) ⇒ Object
22 23 24 25 26 27 28 29 |
# File 'lib/txnap/subscribers/transaction_subscriber.rb', line 22 def start(_name, _start, _finish, _id, payload) connection = payload[:connection] return unless connection Txnap.registry.bind_transaction(connection, payload[:transaction]) rescue => error Txnap.warn("transaction start subscriber failed: #{error.class}: #{error.}") end |