module ActiveRecord::SimpleSlave
Constants
- VERSION
Public Instance Methods
connection()
click to toggle source
Calls superclass method
# File lib/activerecord/simple_slave.rb, line 60 def connection if !Thread.current[:simple_slave_connection].nil? Thread.current[:simple_slave_connection] else super end end
simple_slave_configuration()
click to toggle source
# File lib/activerecord/simple_slave.rb, line 9 def simple_slave_configuration @simple_slave_configuration ||= connection_config.dup.tap do |config| if simple_slave_url.nil? if defined?(::Rails) ::Rails.logger.warn \ 'simple slave disabled (no configuration provided)' end next end uri = URI.parse(simple_slave_url) config[:host] = uri.host config[:port] = uri.port unless uri.port.nil? config[:username] = uri.user unless uri.user.nil? config[:password] = uri.password unless uri.password.nil? if !uri.path.nil? && uri.path.length > 1 config[:database] = uri.path[1..-1] end config.delete(:simple_slave_url) end end
simple_slave_connection_pool()
click to toggle source
# File lib/activerecord/simple_slave.rb, line 40 def simple_slave_connection_pool @simple_slave_connection_pool ||= \ ActiveRecord::ConnectionAdapters::ConnectionPool.new( simple_slave_connection_spec ) end
simple_slave_connection_spec()
click to toggle source
# File lib/activerecord/simple_slave.rb, line 31 def simple_slave_connection_spec return @simple_slave_spec unless @simple_slave_spec.nil? @simple_slave_spec = \ ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.new( 'slave' => simple_slave_configuration ).spec(:slave) end
simple_slave_url()
click to toggle source
# File lib/activerecord/simple_slave.rb, line 3 def simple_slave_url ENV.fetch( 'DATABASE_SIMPLE_SLAVE_URL', connection_config[:simple_slave_url] ) end
with_slave() { |connection| ... }
click to toggle source
# File lib/activerecord/simple_slave.rb, line 47 def with_slave(&_block) retvalue = nil simple_slave_connection_pool.with_connection do |connection| begin Thread.current[:simple_slave_connection] = connection retvalue = yield(connection) ensure Thread.current[:simple_slave_connection] = nil end end retvalue end