Module: ActiveRecord::Slave::Model::ClassMethods
- Defined in:
- lib/active_record/slave/model.rb
Instance Method Summary collapse
- #define_slave_class(base_class, connection_name) ⇒ Object
- #slave_for ⇒ Object
- #use_slave(replication_name) ⇒ Object
Instance Method Details
#define_slave_class(base_class, connection_name) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/active_record/slave/model.rb', line 30 def define_slave_class(base_class, connection_name) model = Class.new(base_class) do module_eval <<-RUBY, __FILE__, __LINE__ + 1 def self.name "#{base_class.name}::Slave::#{connection_name}" end RUBY end model.class_eval { establish_connection(connection_name) } model end |
#slave_for ⇒ Object
26 27 28 |
# File 'lib/active_record/slave/model.rb', line 26 def slave_for @slave_class_repository.fetch @replication_router.slave_connection_name end |
#use_slave(replication_name) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/active_record/slave/model.rb', line 13 def use_slave(replication_name) replication_config = ActiveRecord::Slave.config.fetch_replication_config replication_name @replication_router = ActiveRecord::Slave::ReplicationRouter.new replication_config establish_connection replication_config.master_connection_name @slave_class_repository = {} base_class = self replication_config.slave_connection_names.keys.each do |connection_name| @slave_class_repository[connection_name] = define_slave_class base_class, connection_name end end |