making rake:migrate VERSION=0 a noop called in succession. [#2137 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
68c96fad55
commit
f4d174b211
@ -384,9 +384,13 @@ class Migrator#:nodoc:
|
||||
class << self
|
||||
def migrate(migrations_path, target_version = nil)
|
||||
case
|
||||
when target_version.nil? then up(migrations_path, target_version)
|
||||
when current_version > target_version then down(migrations_path, target_version)
|
||||
else up(migrations_path, target_version)
|
||||
when target_version.nil?
|
||||
up(migrations_path, target_version)
|
||||
when current_version == 0 && target_version == 0
|
||||
when current_version > target_version
|
||||
down(migrations_path, target_version)
|
||||
else
|
||||
up(migrations_path, target_version)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1136,6 +1136,25 @@ def test_only_loads_pending_migrations
|
||||
load(MIGRATIONS_ROOT + "/valid/1_people_have_last_names.rb")
|
||||
end
|
||||
|
||||
def test_target_version_zero_should_run_only_once
|
||||
# migrate up to 1
|
||||
ActiveRecord::Migrator.migrate(MIGRATIONS_ROOT + "/valid", 1)
|
||||
|
||||
# migrate down to 0
|
||||
ActiveRecord::Migrator.migrate(MIGRATIONS_ROOT + "/valid", 0)
|
||||
|
||||
# now unload the migrations that have been defined
|
||||
PeopleHaveLastNames.unloadable
|
||||
ActiveSupport::Dependencies.remove_unloadable_constants!
|
||||
|
||||
# migrate down to 0 again
|
||||
ActiveRecord::Migrator.migrate(MIGRATIONS_ROOT + "/valid", 0)
|
||||
|
||||
assert !defined? PeopleHaveLastNames
|
||||
ensure
|
||||
load(MIGRATIONS_ROOT + "/valid/1_people_have_last_names.rb")
|
||||
end
|
||||
|
||||
def test_migrator_db_has_no_schema_migrations_table
|
||||
# Oracle adapter raises error if semicolon is present as last character
|
||||
if current_adapter?(:OracleAdapter)
|
||||
|
Loading…
Reference in New Issue
Block a user