Sha256: 44926a6e6ec19f915a96a635cab14f5ff7863f10f7d9779d69f58cef85442a6f
Contents?: true
Size: 1.33 KB
Versions: 1
Compression:
Stored size: 1.33 KB
Contents
module DbCharmer module MultiDbProxy class OnDbProxy < BlankSlate def initialize(model_class, slave) @model = model_class @slave = slave end private def method_missing(meth, *args, &block) @model.on_db(@slave) do |m| m.__send__(meth, *args, &block) end end end module ClassMethods 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.migration_connections_should_exist?) yield(proxy_target) ensure switch_connection_to(old_proxy) self.db_charmer_connection_level -= 1 end end end module MasterSlaveClassMethods def on_slave(con = nil, proxy_target = nil, &block) con ||= db_charmer_random_slave raise ArgumentError, "No slaves found in the class and no slave connection given" if con.nil? && DbCharmer.switch_connections? on_db(con, proxy_target, &block) end def on_master(proxy_target = nil, &block) on_db(nil, proxy_target, &block) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
glebpom-db-charmer-1.4.3 | lib/db_charmer/multi_db_proxy.rb |