diff options
| author | Jeremy Kemper <jeremy@bitsweat.net> | 2005-11-24 07:01:43 +0000 | 
|---|---|---|
| committer | Jeremy Kemper <jeremy@bitsweat.net> | 2005-11-24 07:01:43 +0000 | 
| commit | 2b28575734f557ee61a7544e17bd3510eaa6d900 (patch) | |
| tree | f488e4c413298f86a041ca8de3e87ccbb4f37101 /activerecord | |
| parent | 52325f6bf868c5efa80fbcf06d139a31816251fb (diff) | |
| download | rails-2b28575734f557ee61a7544e17bd3510eaa6d900.tar.gz rails-2b28575734f557ee61a7544e17bd3510eaa6d900.tar.bz2 rails-2b28575734f557ee61a7544e17bd3510eaa6d900.zip  | |
Reloading a model doesn't lose track of its connection.  References #2996.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@3182 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord')
13 files changed, 33 insertions, 19 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 07f4313632..18f0b4c16d 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@  *SVN* +* Reloading a model doesn't lose track of its connection.  #2996 [junk@miriamtech.com, Jeremy Kemper] +  * Fixed bug where using update_attribute after pushing a record to a habtm association of the object caused duplicate rows in the join table. #2888 [colman@rominato.com, Florian Weber]  * MySQL, PostgreSQL: reconnect! also reconfigures the connection.  Otherwise, the connection 'loses' its settings if it times out and is reconnected.  #2978 [Shugo Maeda] 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 5e70930a85..5ef200fd97 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb @@ -68,7 +68,7 @@ module ActiveRecord            raise AdapterNotSpecified unless defined? RAILS_ENV            establish_connection(RAILS_ENV)          when ConnectionSpecification -          @@defined_connections[self] = spec +          @@defined_connections[name] = spec          when Symbol, String            if configuration = configurations[spec.to_s]              establish_connection(configuration) @@ -101,11 +101,11 @@ module ActiveRecord        klass = self        ar_super = ActiveRecord::Base.superclass        until klass == ar_super -        if conn = active_connections[klass] +        if conn = active_connections[klass.name]            # Validate the active connection before returning it.            conn.verify!            return conn -        elsif conn = @@defined_connections[klass] +        elsif conn = @@defined_connections[klass.name]            # Activate this connection specification.            klass.connection = conn            return self.connection @@ -119,7 +119,7 @@ module ActiveRecord      def self.connected?        klass = self        until klass == ActiveRecord::Base.superclass -        if active_connections[klass] +        if active_connections[klass.name]            return true          else            klass = klass.superclass @@ -133,9 +133,9 @@ module ActiveRecord      # can be used as argument for establish_connection, for easy      # re-establishing of the connection.      def self.remove_connection(klass=self) -      conn = @@defined_connections[klass] -      @@defined_connections.delete(klass) -      active_connections[klass] = nil +      conn = @@defined_connections[klass.name] +      @@defined_connections.delete(klass.name) +      active_connections[klass.name] = nil        @connection = nil        conn.config if conn      end @@ -143,7 +143,7 @@ module ActiveRecord      # Set the connection for the class.      def self.connection=(spec)        if spec.kind_of?(ActiveRecord::ConnectionAdapters::AbstractAdapter) -        active_connections[self] = spec +        active_connections[name] = spec        elsif spec.kind_of?(ConnectionSpecification)          self.connection = self.send(spec.adapter_method, spec.config)        elsif spec.nil? diff --git a/activerecord/test/connections/native_db2/connection.rb b/activerecord/test/connections/native_db2/connection.rb index 47f323945a..aa736ccc85 100644 --- a/activerecord/test/connections/native_db2/connection.rb +++ b/activerecord/test/connections/native_db2/connection.rb @@ -1,5 +1,5 @@  print "Using native DB2\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new("debug.log") diff --git a/activerecord/test/connections/native_firebird/connection.rb b/activerecord/test/connections/native_firebird/connection.rb index 96baf38376..c861d952d3 100644 --- a/activerecord/test/connections/native_firebird/connection.rb +++ b/activerecord/test/connections/native_firebird/connection.rb @@ -1,5 +1,5 @@  print "Using native Firebird\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new("debug.log") diff --git a/activerecord/test/connections/native_mysql/connection.rb b/activerecord/test/connections/native_mysql/connection.rb index f1dd284b19..dea337567b 100644 --- a/activerecord/test/connections/native_mysql/connection.rb +++ b/activerecord/test/connections/native_mysql/connection.rb @@ -1,5 +1,5 @@  print "Using native MySQL\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new("debug.log") diff --git a/activerecord/test/connections/native_oci/connection.rb b/activerecord/test/connections/native_oci/connection.rb index 2d9006c231..0b1babb898 100644 --- a/activerecord/test/connections/native_oci/connection.rb +++ b/activerecord/test/connections/native_oci/connection.rb @@ -1,5 +1,5 @@  print "Using OCI Oracle\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new STDOUT diff --git a/activerecord/test/connections/native_postgresql/connection.rb b/activerecord/test/connections/native_postgresql/connection.rb index 4dedf74040..1bdff730b1 100644 --- a/activerecord/test/connections/native_postgresql/connection.rb +++ b/activerecord/test/connections/native_postgresql/connection.rb @@ -1,5 +1,5 @@  print "Using native PostgreSQL\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new("debug.log") diff --git a/activerecord/test/connections/native_sqlite/connection.rb b/activerecord/test/connections/native_sqlite/connection.rb index 6a08fc1f8e..ce3494fb7d 100644 --- a/activerecord/test/connections/native_sqlite/connection.rb +++ b/activerecord/test/connections/native_sqlite/connection.rb @@ -1,5 +1,5 @@  print "Using native SQlite\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new("debug.log") diff --git a/activerecord/test/connections/native_sqlite3/connection.rb b/activerecord/test/connections/native_sqlite3/connection.rb index 917f7129da..ab6686076f 100644 --- a/activerecord/test/connections/native_sqlite3/connection.rb +++ b/activerecord/test/connections/native_sqlite3/connection.rb @@ -1,5 +1,5 @@  print "Using native SQLite3\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new("debug.log") diff --git a/activerecord/test/connections/native_sqlite3/in_memory_connection.rb b/activerecord/test/connections/native_sqlite3/in_memory_connection.rb index 9e0414ba88..31b1597048 100644 --- a/activerecord/test/connections/native_sqlite3/in_memory_connection.rb +++ b/activerecord/test/connections/native_sqlite3/in_memory_connection.rb @@ -1,5 +1,5 @@  print "Using native SQLite3\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new("debug.log") diff --git a/activerecord/test/connections/native_sqlserver/connection.rb b/activerecord/test/connections/native_sqlserver/connection.rb index aa19fc7700..24658d7157 100644 --- a/activerecord/test/connections/native_sqlserver/connection.rb +++ b/activerecord/test/connections/native_sqlserver/connection.rb @@ -1,5 +1,5 @@  print "Using native SQLServer\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new("debug.log") diff --git a/activerecord/test/connections/native_sqlserver_odbc/connection.rb b/activerecord/test/connections/native_sqlserver_odbc/connection.rb index b156a07920..918be3eda7 100644 --- a/activerecord/test/connections/native_sqlserver_odbc/connection.rb +++ b/activerecord/test/connections/native_sqlserver_odbc/connection.rb @@ -1,5 +1,5 @@  print "Using native SQLServer via ODBC\n" -require 'fixtures/course' +require_dependency 'fixtures/course'  require 'logger'  ActiveRecord::Base.logger = Logger.new("debug.log") diff --git a/activerecord/test/multiple_db_test.rb b/activerecord/test/multiple_db_test.rb index f888d587d0..df2ef10619 100644 --- a/activerecord/test/multiple_db_test.rb +++ b/activerecord/test/multiple_db_test.rb @@ -1,7 +1,9 @@  require 'abstract_unit' -require 'fixtures/course'  require 'fixtures/entrant' +# So we can test whether Course.connection survives a reload. +require_dependency 'fixtures/course' +  class MultipleDbTest < Test::Unit::TestCase    self.use_transactional_fixtures = false @@ -45,4 +47,14 @@ class MultipleDbTest < Test::Unit::TestCase      e3 = Entrant.find(3)      assert_equal e3.course.id, c2.id    end + +  def test_course_connection_should_survive_dependency_reload +    assert Course.connection + +    Dependencies.clear +    Object.send(:remove_const, :Course) +    require_dependency 'fixtures/course' + +    assert Course.connection +  end  end  | 
