From 12298ef9680d45b73540e60fb6338f6941fc734c Mon Sep 17 00:00:00 2001 From: Alexey Degtyarev Date: Thu, 21 Dec 2017 17:12:19 +0200 Subject: [PATCH] Added the ability to change the default migrations path (introduced in Rails 5.0.3) --- .../active_record/devise_generator.rb | 4 +-- lib/generators/devise/orm_helpers.rb | 6 +++- .../active_record_generator_test.rb | 31 +++++++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/lib/generators/active_record/devise_generator.rb b/lib/generators/active_record/devise_generator.rb index ffcca870..03e14ff0 100644 --- a/lib/generators/active_record/devise_generator.rb +++ b/lib/generators/active_record/devise_generator.rb @@ -11,9 +11,9 @@ module ActiveRecord def copy_devise_migration if (behavior == :invoke && model_exists?) || (behavior == :revoke && migration_exists?(table_name)) - migration_template "migration_existing.rb", "db/migrate/add_devise_to_#{table_name}.rb", migration_version: migration_version + migration_template "migration_existing.rb", "#{migration_path}/add_devise_to_#{table_name}.rb", migration_version: migration_version else - migration_template "migration.rb", "db/migrate/devise_create_#{table_name}.rb", migration_version: migration_version + migration_template "migration.rb", "#{migration_path}/devise_create_#{table_name}.rb", migration_version: migration_version end end diff --git a/lib/generators/devise/orm_helpers.rb b/lib/generators/devise/orm_helpers.rb index f67204b3..f98f3774 100644 --- a/lib/generators/devise/orm_helpers.rb +++ b/lib/generators/devise/orm_helpers.rb @@ -23,7 +23,11 @@ CONTENT end def migration_path - @migration_path ||= File.join("db", "migrate") + if Rails.version >= '5.0.3' + db_migrate_path + else + @migration_path ||= File.join("db", "migrate") + end end def model_path diff --git a/test/generators/active_record_generator_test.rb b/test/generators/active_record_generator_test.rb index 79fab2b1..941162c9 100644 --- a/test/generators/active_record_generator_test.rb +++ b/test/generators/active_record_generator_test.rb @@ -13,6 +13,20 @@ if DEVISE_ORM == :active_record assert_migration "db/migrate/devise_create_monsters.rb", /def change/ end + test "all files are properly created with changed db/migrate path in application configuration" do + old_paths = Rails.application.config.paths["db/migrate"] + Rails.application.config.paths.add "db/migrate", with: "db2/migrate" + + run_generator %w(monster) + if Rails.version >= '5.0.3' + assert_migration "db2/migrate/devise_create_monsters.rb", /def change/ + else + assert_migration "db/migrate/devise_create_monsters.rb", /def change/ + end + + Rails.application.config.paths["db/migrate"] = old_paths + end + test "all files for namespaced model are properly created" do run_generator %w(admin/monster) assert_migration "db/migrate/devise_create_admin_monsters.rb", /def change/ @@ -25,6 +39,23 @@ if DEVISE_ORM == :active_record assert_migration "db/migrate/add_devise_to_monsters.rb" end + test "update model migration when model exists with changed db/migrate path in application configuration" do + old_paths = Rails.application.config.paths["db/migrate"] + Rails.application.config.paths.add "db/migrate", with: "db2/migrate" + + run_generator %w(monster) + assert_file "app/models/monster.rb" + run_generator %w(monster) + + if Rails.version >= '5.0.3' + assert_migration "db2/migrate/add_devise_to_monsters.rb" + else + assert_migration "db/migrate/add_devise_to_monsters.rb" + end + + Rails.application.config.paths["db/migrate"] = old_paths + end + test "all files are properly deleted" do run_generator %w(monster) run_generator %w(monster)