aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-07-01 17:59:43 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2014-07-01 17:59:43 -0700
commit9d599abe0febd96d7cd1f22e7d5f380187ae4476 (patch)
tree98af019938a39ab491c504c5102852186d439b43 /activerecord
parentad778bc422b338a7ef4de613a5919667ce2196ba (diff)
downloadrails-9d599abe0febd96d7cd1f22e7d5f380187ae4476.tar.gz
rails-9d599abe0febd96d7cd1f22e7d5f380187ae4476.tar.bz2
rails-9d599abe0febd96d7cd1f22e7d5f380187ae4476.zip
do not hold on to a stale connection object. fixes #15998
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/migration.rb13
-rw-r--r--activerecord/test/cases/migration/pending_migrations_test.rb7
2 files changed, 14 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/migration.rb b/activerecord/lib/active_record/migration.rb
index 12eaf36156..e94b6ae9eb 100644
--- a/activerecord/lib/active_record/migration.rb
+++ b/activerecord/lib/active_record/migration.rb
@@ -366,22 +366,27 @@ module ActiveRecord
# This class is used to verify that all migrations have been run before
# loading a web page if config.active_record.migration_error is set to :page_load
class CheckPending
- def initialize(app, connection = Base.connection)
+ def initialize(app)
@app = app
- @connection = connection
@last_check = 0
end
def call(env)
- if @connection.supports_migrations?
+ if connection.supports_migrations?
mtime = ActiveRecord::Migrator.last_migration.mtime.to_i
if @last_check < mtime
- ActiveRecord::Migration.check_pending!(@connection)
+ ActiveRecord::Migration.check_pending!(connection)
@last_check = mtime
end
end
@app.call(env)
end
+
+ private
+
+ def connection
+ ActiveRecord::Base.connection
+ end
end
class << self
diff --git a/activerecord/test/cases/migration/pending_migrations_test.rb b/activerecord/test/cases/migration/pending_migrations_test.rb
index eff000e1a4..517ee695ce 100644
--- a/activerecord/test/cases/migration/pending_migrations_test.rb
+++ b/activerecord/test/cases/migration/pending_migrations_test.rb
@@ -8,14 +8,17 @@ module ActiveRecord
super
@connection = MiniTest::Mock.new
@app = MiniTest::Mock.new
- @pending = CheckPending.new(@app, @connection)
+ conn = @connection
+ @pending = Class.new(CheckPending) {
+ define_method(:connection) { conn }
+ }.new(@app)
@pending.instance_variable_set :@last_check, -1 # Force checking
end
def teardown
- super
assert @connection.verify
assert @app.verify
+ super
end
def test_errors_if_pending