class CounterCulture::WithConnection
Attributes
Public Class Methods
Source
# File lib/counter_culture/with_connection.rb, line 3 def initialize(recipient) @recipient = recipient end
Public Instance Methods
Source
# File lib/counter_culture/with_connection.rb, line 9 def call(reading: false) if rails_7_1_or_greater? use_read_replica = CounterCulture.configuration.use_read_replica && reading role = use_read_replica ? :reading : :writing ActiveRecord::Base.connected_to(role: role) do yield_with_connection { |conn| yield conn } end else # For older Rails versions, just use normal connection yield_with_connection { |conn| yield conn } end end
Private Instance Methods
Source
# File lib/counter_culture/with_connection.rb, line 43 def rails_7_1? Gem::Requirement.new('~> 7.1.0').satisfied_by?(ActiveRecord.version) end
Source
# File lib/counter_culture/with_connection.rb, line 35 def rails_7_1_or_greater? Gem::Requirement.new('>= 7.1.0').satisfied_by?(ActiveRecord.version) end
Source
# File lib/counter_culture/with_connection.rb, line 39 def rails_7_2_or_greater? Gem::Requirement.new('>= 7.2.0').satisfied_by?(ActiveRecord.version) end
Source
# File lib/counter_culture/with_connection.rb, line 25 def yield_with_connection if rails_7_2_or_greater? recipient.with_connection { |conn| yield conn } elsif rails_7_1? recipient.connection_pool.with_connection { |conn| yield conn } else yield recipient.connection end end