提交 255a2422 编写于 作者: G Genadi Samokovarov

Make ActiveRecord::PendingMigrationError actionable

上级 45f1c7a3
......@@ -129,6 +129,12 @@ def initialize(name = nil)
end
class PendingMigrationError < MigrationError #:nodoc:
include ActiveSupport::ActionableError
action "Run pending migrations" do
ActiveRecord::Tasks::DatabaseTasks.migrate
end
def initialize(message = nil)
if !message && defined?(Rails.env)
super("Migrations are pending. To resolve this issue, run:\n\n rails db:migrate RAILS_ENV=#{::Rails.env}")
......
......@@ -760,7 +760,7 @@ class DatabaseTasksMigrationTestCase < ActiveRecord::TestCase
end
class DatabaseTasksMigrateTest < DatabaseTasksMigrationTestCase
def test_migrate_set_and_unset_verbose_and_version_env_vars
def test_can_migrate_from_pending_migration_error_action_dispatch
verbose, version = ENV["VERBOSE"], ENV["VERSION"]
ENV["VERSION"] = "2"
ENV["VERBOSE"] = "false"
......@@ -772,7 +772,9 @@ def test_migrate_set_and_unset_verbose_and_version_env_vars
ENV.delete("VERBOSE")
# re-run up migration
assert_includes capture_migration_output, "migrating"
assert_includes(capture(:stdout) do
ActiveSupport::ActionableError.dispatch ActiveRecord::PendingMigrationError, "Run pending migrations"
end, "migrating")
ensure
ENV["VERBOSE"], ENV["VERSION"] = verbose, version
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册