class Sequent::Core::Transactions::ReadOnlyActiveRecordTransactionProvider
Public Class Methods
new(transaction_provider)
click to toggle source
# File lib/sequent/core/transactions/read_only_active_record_transaction_provider.rb, line 7 def initialize(transaction_provider) @transaction_provider = transaction_provider end
Public Instance Methods
transactional(&block)
click to toggle source
# File lib/sequent/core/transactions/read_only_active_record_transaction_provider.rb, line 11 def transactional(&block) register_call @transaction_provider.transactional do Sequent::ApplicationRecord.connection.execute('SET TRANSACTION READ ONLY') block.call rescue ActiveRecord::StatementInvalid @skip_set_transaction = true raise ensure deregister_call reset_stack_size if stack_size == 0 end end
Private Instance Methods
deregister_call()
click to toggle source
# File lib/sequent/core/transactions/read_only_active_record_transaction_provider.rb, line 36 def deregister_call Thread.current[:read_only_active_record_transaction_provider_calls] -= 1 end
register_call()
click to toggle source
# File lib/sequent/core/transactions/read_only_active_record_transaction_provider.rb, line 31 def register_call Thread.current[:read_only_active_record_transaction_provider_calls] ||= 0 Thread.current[:read_only_active_record_transaction_provider_calls] += 1 end
reset_stack_size()
click to toggle source
# File lib/sequent/core/transactions/read_only_active_record_transaction_provider.rb, line 40 def reset_stack_size Thread.current[:read_only_active_record_transaction_provider_calls] = nil end
stack_size()
click to toggle source
# File lib/sequent/core/transactions/read_only_active_record_transaction_provider.rb, line 27 def stack_size Thread.current[:read_only_active_record_transaction_provider_calls] end