diff options
author | David Trasbo <me@dtrasbo.com> | 2010-09-02 16:25:36 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-09-18 21:22:29 +0200 |
commit | e8082246529737b6cf0d5cc3c948e54896aa1329 (patch) | |
tree | f721a0ae3648f9733f433bc403a7336ddf42440d /railties | |
parent | 20685d07ab5853457e1d11467f22ed42568e20f4 (diff) | |
download | rails-e8082246529737b6cf0d5cc3c948e54896aa1329.tar.gz rails-e8082246529737b6cf0d5cc3c948e54896aa1329.tar.bz2 rails-e8082246529737b6cf0d5cc3c948e54896aa1329.zip |
Remove existing migration when using 'rails generate model' with --force [#5526 state:committed]
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'railties')
-rw-r--r-- | railties/lib/rails/generators/migration.rb | 6 | ||||
-rw-r--r-- | railties/test/generators/model_generator_test.rb | 9 |
2 files changed, 14 insertions, 1 deletions
diff --git a/railties/lib/rails/generators/migration.rb b/railties/lib/rails/generators/migration.rb index 9244307261..8d98909055 100644 --- a/railties/lib/rails/generators/migration.rb +++ b/railties/lib/rails/generators/migration.rb @@ -53,7 +53,11 @@ module Rails destination = self.class.migration_exists?(migration_dir, @migration_file_name) if behavior == :invoke - raise Error, "Another migration is already named #{@migration_file_name}: #{destination}" if destination + if destination && options.force? + remove_file(destination) + elsif destination + raise Error, "Another migration is already named #{@migration_file_name}: #{destination}" + end destination = File.join(migration_dir, "#{@migration_number}_#{@migration_file_name}.rb") end diff --git a/railties/test/generators/model_generator_test.rb b/railties/test/generators/model_generator_test.rb index f4a9a152c9..52e08cf2dd 100644 --- a/railties/test/generators/model_generator_test.rb +++ b/railties/test/generators/model_generator_test.rb @@ -165,6 +165,15 @@ class ModelGeneratorTest < Rails::Generators::TestCase assert_no_migration "db/migrate/create_accounts.rb" end + def test_existing_migration_is_removed_on_force + run_generator + old_migration = Dir["#{destination_root}/db/migrate/*_create_accounts.rb"].first + error = capture(:stderr) { run_generator ["Account", "--force"] } + assert_no_match /Another migration is already named create_foos/, error + assert_no_file old_migration + assert_migration 'db/migrate/create_accounts.rb' + end + def test_invokes_default_test_framework run_generator assert_file "test/unit/account_test.rb", /class AccountTest < ActiveSupport::TestCase/ |