From d65e3b481e72e8c76818a94353e9ac315c7c0272 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 3 Feb 2011 11:50:43 -0800 Subject: [PATCH] ARel only requires the connection from the AR class. Simply return the AR class rather than jump through hoops and store ivars --- activerecord/lib/active_record/base.rb | 10 +--- .../abstract/connection_specification.rb | 48 +++++++++---------- activerecord/test/cases/multiple_db_test.rb | 6 +-- 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index 8750e226b9af2..4e743ec826fb9 100644 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -747,7 +747,7 @@ def reset_column_information undefine_attribute_methods reset_column_cache @column_names = @content_columns = @dynamic_methods_hash = @inheritance_column = nil - @arel_engine = @relation = nil + @relation = nil end def reset_column_cache # :nodoc: @@ -856,13 +856,7 @@ def arel_table end def arel_engine - @arel_engine ||= begin - if self == ActiveRecord::Base - ActiveRecord::Base - else - connection_handler.connection_pools[name] ? self : superclass.arel_engine - end - end + self end # Returns a scope for this class without taking into account the default_scope. diff --git a/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb b/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb index 3716937689216..5a6d13e64b18a 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb @@ -50,34 +50,34 @@ def connection # may be returned on an error. def self.establish_connection(spec = nil) case spec - when nil - raise AdapterNotSpecified unless defined?(Rails.env) - establish_connection(Rails.env) - when ConnectionSpecification - self.connection_handler.establish_connection(name, spec) - when Symbol, String - if configuration = configurations[spec.to_s] - establish_connection(configuration) - else - raise AdapterNotSpecified, "#{spec} database is not configured" - end + when nil + raise AdapterNotSpecified unless defined?(Rails.env) + establish_connection(Rails.env) + when ConnectionSpecification + self.connection_handler.establish_connection(name, spec) + when Symbol, String + if configuration = configurations[spec.to_s] + establish_connection(configuration) else - spec = spec.symbolize_keys - unless spec.key?(:adapter) then raise AdapterNotSpecified, "database configuration does not specify adapter" end + raise AdapterNotSpecified, "#{spec} database is not configured" + end + else + spec = spec.symbolize_keys + unless spec.key?(:adapter) then raise AdapterNotSpecified, "database configuration does not specify adapter" end - begin - require "active_record/connection_adapters/#{spec[:adapter]}_adapter" - rescue LoadError => e - raise "Please install the #{spec[:adapter]} adapter: `gem install activerecord-#{spec[:adapter]}-adapter` (#{e})" - end + begin + require "active_record/connection_adapters/#{spec[:adapter]}_adapter" + rescue LoadError => e + raise "Please install the #{spec[:adapter]} adapter: `gem install activerecord-#{spec[:adapter]}-adapter` (#{e})" + end - adapter_method = "#{spec[:adapter]}_connection" - unless respond_to?(adapter_method) - raise AdapterNotFound, "database configuration specifies nonexistent #{spec[:adapter]} adapter" - end + adapter_method = "#{spec[:adapter]}_connection" + unless respond_to?(adapter_method) + raise AdapterNotFound, "database configuration specifies nonexistent #{spec[:adapter]} adapter" + end - remove_connection - establish_connection(ConnectionSpecification.new(spec, adapter_method)) + remove_connection + establish_connection(ConnectionSpecification.new(spec, adapter_method)) end end diff --git a/activerecord/test/cases/multiple_db_test.rb b/activerecord/test/cases/multiple_db_test.rb index bd51388e0525c..3daf81c828ea7 100644 --- a/activerecord/test/cases/multiple_db_test.rb +++ b/activerecord/test/cases/multiple_db_test.rb @@ -84,8 +84,8 @@ def test_transactions_across_databases assert_equal "Ruby Developer", Entrant.find(1).name end - def test_arel_table_engines - assert_not_equal Entrant.arel_engine, Course.arel_engine - assert_equal Entrant.arel_engine, Bird.arel_engine + def test_connections + assert_not_equal Entrant.connection, Course.connection + assert_equal Entrant.connection, Bird.connection end end