module ConAir

Constants

VERSION

Public Class Methods

hijack(config, klass = ActiveRecord::Base) { || ... } click to toggle source
# File lib/con_air.rb, line 6
def self.hijack(config, klass = ActiveRecord::Base, &block)
  ar = ActiveRecord::Base
  handler = ar.handler_hijackings[ar.connection_id]

  if handler && handler.exist?(config, klass)
    handler.active = true
  else
    spec = ActiveRecord::Base::ConnectionSpecification.new(config, klass.connection_pool.spec.adapter_method)
    ar.handler_hijackings[ar.connection_id] = ConnectionHandler.new(klass, spec)
  end

  # Init the hijaking connection for class
  klass.establish_connection

  yield
ensure
  ar.handler_hijackings[ar.connection_id].active = false
end