module DbCharmer::ActiveRecord::ClassAttributes

Public Instance Methods

db_charmer_connection_level() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 81
def db_charmer_connection_level
  db_charmer_connection_levels[self.name] || 0
end
db_charmer_connection_level=(level) click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 77
def db_charmer_connection_level=(level)
  db_charmer_connection_levels[self.name] = level
end
db_charmer_connection_levels() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 73
def db_charmer_connection_levels
  Thread.current[:db_charmer_connection_levels] ||= Hash.new(0)
end
db_charmer_connection_proxies() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 40
def db_charmer_connection_proxies
  Thread.current[:db_charmer_connection_proxies] ||= {}
end
db_charmer_connection_proxy() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 48
def db_charmer_connection_proxy
  db_charmer_connection_proxies[self.name]
end
db_charmer_connection_proxy=(proxy) click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 44
def db_charmer_connection_proxy=(proxy)
  db_charmer_connection_proxies[self.name] = proxy
end
db_charmer_database_remappings() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 100
def db_charmer_database_remappings
  Thread.current[:db_charmer_database_remappings] ||= Hash.new
end
db_charmer_database_remappings=(mappings) click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 104
def db_charmer_database_remappings=(mappings)
  raise "Mappings must be nil or respond to []" if mappings && (! mappings.respond_to?(:[]))
  Thread.current[:db_charmer_database_remappings] = mappings || {}
end
db_charmer_default_connection() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 19
def db_charmer_default_connection
  @@db_charmer_default_connections[self.name]
end
db_charmer_default_connection=(conn) click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 15
def db_charmer_default_connection=(conn)
  @@db_charmer_default_connections[self.name] = conn
end
db_charmer_force_slave_reads() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 61
def db_charmer_force_slave_reads
  db_charmer_force_slave_reads_flags[self.name]
end
db_charmer_force_slave_reads=(force) click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 57
def db_charmer_force_slave_reads=(force)
  db_charmer_force_slave_reads_flags[self.name] = force
end
db_charmer_force_slave_reads?() click to toggle source

Slave reads are used in two cases:

- per-model slave reads are enabled (see db_magic method for more details)
- global slave reads enforcing is enabled (in a controller action)
# File lib/db_charmer/active_record/class_attributes.rb, line 68
def db_charmer_force_slave_reads?
  db_charmer_force_slave_reads || DbCharmer.force_slave_reads?
end
db_charmer_force_slave_reads_flags() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 53
def db_charmer_force_slave_reads_flags
  Thread.current[:db_charmer_force_slave_reads] ||= {}
end
db_charmer_model_connection_proxy() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 111
def db_charmer_model_connection_proxy
  db_charmer_connection_proxy || db_charmer_default_connection
end
db_charmer_opts() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 9
def db_charmer_opts
  @@db_charmer_opts[self.name] || {}
end
db_charmer_opts=(opts) click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 5
def db_charmer_opts=(opts)
  @@db_charmer_opts[self.name] = opts
end
db_charmer_random_slave() click to toggle source

Returns a random connection from the list of slaves configured for this AR class

# File lib/db_charmer/active_record/class_attributes.rb, line 34
def db_charmer_random_slave
  return nil unless db_charmer_slaves.any?
  db_charmer_slaves[rand(db_charmer_slaves.size)]
end
db_charmer_remapped_connection() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 90
def db_charmer_remapped_connection
  return nil unless db_charmer_top_level_connection?
  name = :master
  proxy = db_charmer_model_connection_proxy
  name = proxy.db_charmer_connection_name.to_sym if proxy

  remapped = db_charmer_database_remappings[name]
  remapped ? DbCharmer::ConnectionFactory.connect(remapped, true) : nil
end
db_charmer_slaves() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 29
def db_charmer_slaves
  @@db_charmer_slaves[self.name] || []
end
db_charmer_slaves=(slaves) click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 25
def db_charmer_slaves=(slaves)
  @@db_charmer_slaves[self.name] = slaves
end
db_charmer_top_level_connection?() click to toggle source
# File lib/db_charmer/active_record/class_attributes.rb, line 85
def db_charmer_top_level_connection?
  db_charmer_connection_level.zero?
end