module ActiveRecord::Slave::Model::ClassMethods

Public Instance Methods

define_slave_class(base_class, connection_name) click to toggle source
# 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() click to toggle source
# 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) click to toggle source
# 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