Module: MasterSlave::Base::ClassMethods

Defined in:
lib/master_slave/base.rb

Instance Method Summary collapse

Instance Method Details

#connection_with_master_slaveObject



34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/master_slave/base.rb', line 34

def connection_with_master_slave
  slave_block        = MasterSlave::RuntimeRegistry.slave_block
  current_slave_name = MasterSlave::RuntimeRegistry.current_slave_name

  if defined?(Rails) && Rails.env.test?
    connection_without_master_slave
  elsif slave_block && current_slave_name
    pool_name  = MasterSlave::ConnectionHandler.connection_pool_name(current_slave_name)
    ar_proxy   = MasterSlave::ConnectionHandler::ArProxy.new(pool_name)
    ActiveRecord::Base.connection_handler.retrieve_connection(ar_proxy)
  else
    connection_without_master_slave
  end
end

#slave(&block) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'lib/master_slave/base.rb', line 17

def slave(&block)
  slave_name = select_slave_connection_name
  if slave_name.blank?
    block.call
  else
    with_slave(slave_name) do
      block.call
    end
  end
end

#using(slave_name, &block) ⇒ Object



28
29
30
31
32
# File 'lib/master_slave/base.rb', line 28

def using(slave_name, &block)
  with_slave(slave_name) do
    block.call
  end
end