aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/CHANGELOG2
-rw-r--r--activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb16
-rw-r--r--activerecord/test/connections/native_db2/connection.rb2
-rw-r--r--activerecord/test/connections/native_firebird/connection.rb2
-rw-r--r--activerecord/test/connections/native_mysql/connection.rb2
-rw-r--r--activerecord/test/connections/native_oci/connection.rb2
-rw-r--r--activerecord/test/connections/native_postgresql/connection.rb2
-rw-r--r--activerecord/test/connections/native_sqlite/connection.rb2
-rw-r--r--activerecord/test/connections/native_sqlite3/connection.rb2
-rw-r--r--activerecord/test/connections/native_sqlite3/in_memory_connection.rb2
-rw-r--r--activerecord/test/connections/native_sqlserver/connection.rb2
-rw-r--r--activerecord/test/connections/native_sqlserver_odbc/connection.rb2
-rw-r--r--activerecord/test/multiple_db_test.rb14
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