Permalink
Browse files

Revert "ARel only requires the connection from the AR class. Simply r…

…eturn the AR class rather than jump through hoops and store ivars"

This reverts commit d65e3b4.
  • Loading branch information...
1 parent 95d5d9b commit 23a3ba426067d3d38259ef4e1d234cbb82c8aea2 @tenderlove tenderlove committed Feb 3, 2011
@@ -747,7 +747,7 @@ def reset_column_information
undefine_attribute_methods
reset_column_cache
@column_names = @content_columns = @dynamic_methods_hash = @inheritance_column = nil
- @relation = nil
+ @arel_engine = @relation = nil
end
def reset_column_cache # :nodoc:
@@ -856,7 +856,13 @@ def arel_table
end
def arel_engine
- self
+ @arel_engine ||= begin
+ if self == ActiveRecord::Base
+ ActiveRecord::Base
+ else
+ connection_handler.connection_pools[name] ? self : superclass.arel_engine
+ end
+ end
end
# Returns a scope for this class without taking into account the default_scope.
@@ -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)
+ 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
else
- 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
+ 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
@@ -84,8 +84,8 @@ def test_transactions_across_databases
assert_equal "Ruby Developer", Entrant.find(1).name
end
- def test_connections
- assert_not_equal Entrant.connection, Course.connection
- assert_equal Entrant.connection, Bird.connection
+ def test_arel_table_engines
+ assert_not_equal Entrant.arel_engine, Course.arel_engine
+ assert_equal Entrant.arel_engine, Bird.arel_engine
end
end

0 comments on commit 23a3ba4

Please sign in to comment.