class Sequent::Core::Transactions::ReadOnlyActiveRecordTransactionProvider
Public Class Methods
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
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
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
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
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
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