Module: DbCharmer::ActiveRecord::ClassAttributes
- Defined in:
- lib/db_charmer/active_record/class_attributes.rb
Constant Summary collapse
- @@db_charmer_opts =
{}
- @@db_charmer_connection_proxies =
{}
- @@db_charmer_default_connections =
{}
- @@db_charmer_slaves =
{}
- @@db_charmer_force_slave_reads =
{}
- @@db_charmer_connection_levels =
Hash.new(0)
- @@db_charmer_database_remappings =
Hash.new
Instance Method Summary collapse
- #db_charmer_connection_level ⇒ Object
- #db_charmer_connection_level=(level) ⇒ Object
- #db_charmer_connection_proxy ⇒ Object
- #db_charmer_connection_proxy=(proxy) ⇒ Object
- #db_charmer_database_remappings ⇒ Object
- #db_charmer_database_remappings=(mappings) ⇒ Object
- #db_charmer_default_connection ⇒ Object
- #db_charmer_default_connection=(conn) ⇒ Object
- #db_charmer_force_slave_reads ⇒ Object
- #db_charmer_force_slave_reads=(force) ⇒ Object
-
#db_charmer_force_slave_reads? ⇒ Boolean
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).
- #db_charmer_opts ⇒ Object
- #db_charmer_opts=(opts) ⇒ Object
- #db_charmer_random_slave ⇒ Object
- #db_charmer_remapped_connection ⇒ Object
- #db_charmer_slaves ⇒ Object
- #db_charmer_slaves=(slaves) ⇒ Object
- #db_charmer_top_level_connection? ⇒ Boolean
Instance Method Details
#db_charmer_connection_level ⇒ Object
71 72 73 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 71 def db_charmer_connection_level @@db_charmer_connection_levels[self.name] || 0 end |
#db_charmer_connection_level=(level) ⇒ Object
67 68 69 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 67 def db_charmer_connection_level=(level) @@db_charmer_connection_levels[self.name] = level end |
#db_charmer_connection_proxy ⇒ Object
19 20 21 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 19 def db_charmer_connection_proxy @@db_charmer_connection_proxies[self.name] end |
#db_charmer_connection_proxy=(proxy) ⇒ Object
15 16 17 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 15 def db_charmer_connection_proxy=(proxy) @@db_charmer_connection_proxies[self.name] = proxy end |
#db_charmer_database_remappings ⇒ Object
91 92 93 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 91 def db_charmer_database_remappings @@db_charmer_database_remappings end |
#db_charmer_database_remappings=(mappings) ⇒ Object
95 96 97 98 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 95 def db_charmer_database_remappings=(mappings) raise "Mappings must be nil or respond to []" if mappings && (! mappings.respond_to?(:[])) @@db_charmer_database_remappings = mappings || { } end |
#db_charmer_default_connection ⇒ Object
29 30 31 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 29 def db_charmer_default_connection @@db_charmer_default_connections[self.name] end |
#db_charmer_default_connection=(conn) ⇒ Object
25 26 27 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 25 def db_charmer_default_connection=(conn) @@db_charmer_default_connections[self.name] = conn end |
#db_charmer_force_slave_reads ⇒ Object
54 55 56 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 54 def db_charmer_force_slave_reads @@db_charmer_force_slave_reads[self.name] end |
#db_charmer_force_slave_reads=(force) ⇒ Object
50 51 52 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 50 def db_charmer_force_slave_reads=(force) @@db_charmer_force_slave_reads[self.name] = force end |
#db_charmer_force_slave_reads? ⇒ Boolean
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)
61 62 63 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 61 def db_charmer_force_slave_reads? db_charmer_force_slave_reads || DbCharmer.force_slave_reads? end |
#db_charmer_opts ⇒ Object
9 10 11 |
# 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) ⇒ Object
5 6 7 |
# 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 ⇒ Object
43 44 45 46 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 43 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 ⇒ Object
81 82 83 84 85 86 87 88 89 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 81 def db_charmer_remapped_connection return nil if (db_charmer_connection_level || 0) > 0 name = :master proxy = db_charmer_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 ⇒ Object
39 40 41 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 39 def db_charmer_slaves @@db_charmer_slaves[self.name] || [] end |
#db_charmer_slaves=(slaves) ⇒ Object
35 36 37 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 35 def db_charmer_slaves=(slaves) @@db_charmer_slaves[self.name] = slaves end |
#db_charmer_top_level_connection? ⇒ Boolean
75 76 77 |
# File 'lib/db_charmer/active_record/class_attributes.rb', line 75 def db_charmer_top_level_connection? db_charmer_connection_level.zero? end |