class Slaver::ConfigHandler

Attributes

block[R]
current_config[R]
saved_block[R]
saved_config[R]

Public Instance Methods

run_with(klass, config_name, pools_handler) { || ... } click to toggle source
# File lib/slaver/config_handler.rb, line 7
def run_with(klass, config_name, pools_handler)
  config_name = prepare(config_name)

  pools_handler.for_config(klass, config_name)

  with_config(config_name) { yield }
end

Private Instance Methods

prepare(config_name) click to toggle source
# File lib/slaver/config_handler.rb, line 28
def prepare(config_name)
  config_name = config_name.to_s

  return config_name if ::ActiveRecord::Base.configurations.key?(config_name)

  config_name = "#{Rails.env}_#{config_name}"

  unless ::ActiveRecord::Base.configurations.key?(config_name)
    if Rails.env.production?
      raise ArgumentError, "Can't find #{config_name} on database configurations"
    else
      config_name = Rails.env
    end
  end

  config_name
end
with_config(config_name) { || ... } click to toggle source
# File lib/slaver/config_handler.rb, line 17
def with_config(config_name)
  last_config = @current_config
  @current_config = config_name

  begin
    yield
  ensure
    @current_config = last_config
  end
end