Sha256: cda6294479440ceca655fa086fd7c47c0d12dd4b66bc652343fdf15e59415ffe
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
module DbCharmer module FinderOverrides module ClassMethods SLAVE_METHODS = [ :find_by_sql, :count_by_sql, :calculate ] MASTER_METHODS = [ :update, :create, :delete, :destroy, :delete_all, :destroy_all, :update_all, :update_counters ] SLAVE_METHODS.each do |slave_method| class_eval <<-EOF, __FILE__, __LINE__ + 1 def #{slave_method}(*args, &block) first_level_on_slave do super(*args, &block) end end EOF end MASTER_METHODS.each do |master_method| class_eval <<-EOF, __FILE__, __LINE__ + 1 def #{master_method}(*args, &block) on_master do super(*args, &block) end end EOF end private def first_level_on_slave if db_charmer_top_level_connection? && on_master.connection.open_transactions.zero? on_slave { yield } else yield end end end module InstanceMethods def reload(*args, &block) self.class.on_master do super(*args, &block) end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
db-charmer-1.4.3 | lib/db_charmer/finder_overrides.rb |
db-charmer-1.4.1 | lib/db_charmer/finder_overrides.rb |
db-charmer-1.4.0 | lib/db_charmer/finder_overrides.rb |