提交 4dc6b64c 编写于 作者: R Rafael Mendonça França

Merge pull request #13963 from lucas-clemente/pending_migrations

Skip migration check if adapter doesn't support it
......@@ -366,16 +366,19 @@ class Migration
# 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)
def initialize(app, connection = Base.connection)
@app = app
@connection = connection
@last_check = 0
end
def call(env)
mtime = ActiveRecord::Migrator.last_migration.mtime.to_i
if @last_check < mtime
ActiveRecord::Migration.check_pending!
@last_check = mtime
if @connection.supports_migrations?
mtime = ActiveRecord::Migrator.last_migration.mtime.to_i
if @last_check < mtime
ActiveRecord::Migration.check_pending!(@connection)
@last_check = mtime
end
end
@app.call(env)
end
......
require 'cases/helper'
require "minitest/mock"
module ActiveRecord
class Migration
class PendingMigrationsTest < ActiveRecord::TestCase
def setup
super
@connection = MiniTest::Mock.new
@app = MiniTest::Mock.new
@pending = CheckPending.new(@app, @connection)
@pending.instance_variable_set :@last_check, -1 # Force checking
end
def teardown
super
assert @connection.verify
assert @app.verify
end
def test_errors_if_pending
@connection.expect :supports_migrations?, true
ActiveRecord::Migrator.stub :needs_migration?, true do
assert_raise ActiveRecord::PendingMigrationError do
@pending.call(nil)
end
end
end
def test_checks_if_supported
@connection.expect :supports_migrations?, true
@app.expect :call, nil, [:foo]
ActiveRecord::Migrator.stub :needs_migration?, false do
@pending.call(:foo)
end
end
def test_doesnt_check_if_unsupported
@connection.expect :supports_migrations?, false
@app.expect :call, nil, [:foo]
ActiveRecord::Migrator.stub :needs_migration?, true do
@pending.call(:foo)
end
end
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册