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