module DbCharmer::ActiveRecord::MultiDbProxy::ClassMethods

Public Instance Methods

on_db(con, proxy_target = nil) { |proxy_target| ... } click to toggle source
# File lib/db_charmer/active_record/multi_db_proxy.rb, line 29
def on_db(con, proxy_target = nil)
  proxy_target ||= self

  # Chain call
  return OnDbProxy.new(proxy_target, con) unless block_given?

  # Block call
  begin
    self.db_charmer_connection_level += 1
    old_proxy = db_charmer_connection_proxy
    switch_connection_to(con, DbCharmer.connections_should_exist?)
    yield(proxy_target)
  ensure
    switch_connection_to(old_proxy)
    self.db_charmer_connection_level -= 1
  end
end