17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/master_slave/connection_handler.rb', line 17
def setup_connection
ActiveRecord::Base.slave_connection_names ||= []
MasterSlave.config.slave_names.each do |slave_name|
slave_name = slave_name.to_s.strip
if !ActiveRecord::Base.slave_connection_names.include? slave_name
ActiveRecord::Base.slave_connection_names << slave_name
end
spec = { Rails.env => MasterSlave.config.slave_config(slave_name) }
resolver = ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.new spec
spec = resolver.spec(Rails.env.to_sym)
unless ActiveRecord::Base.respond_to?(spec.adapter_method)
raise AdapterNotFound, "database configuration specifies nonexistent #{spec.config[:adapter]} adapter"
end
ar_proxy = ArProxy.new(connection_pool_name(slave_name))
ActiveRecord::Base.remove_connection(ar_proxy)
ActiveRecord::Base.connection_handler.establish_connection ar_proxy, spec
end
end
|