Skip to content

Commit

Permalink
Merge pull request #36744 from freeletics/fix-db-prepare
Browse files Browse the repository at this point in the history
Fixed db:prepare task to not touch schema when it is disabled
  • Loading branch information
eileencodes committed Jul 24, 2019
1 parent 5574097 commit 39b8df8
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
7 changes: 4 additions & 3 deletions activerecord/lib/active_record/railties/databases.rake
Expand Up @@ -297,10 +297,11 @@ db_namespace = namespace :db do
ActiveRecord::Base.configurations.configs_for(env_name: ActiveRecord::Tasks::DatabaseTasks.env).each do |db_config|
ActiveRecord::Base.establish_connection(db_config.config)

ActiveRecord::Tasks::DatabaseTasks.migrate

# Skipped when no database
ActiveRecord::Tasks::DatabaseTasks.dump_schema(db_config.config, ActiveRecord::Base.schema_format, db_config.spec_name)
ActiveRecord::Tasks::DatabaseTasks.migrate
if ActiveRecord::Base.dump_schema_after_migration
ActiveRecord::Tasks::DatabaseTasks.dump_schema(db_config.config, ActiveRecord::Base.schema_format, db_config.spec_name)
end

rescue ActiveRecord::NoDatabaseError
ActiveRecord::Tasks::DatabaseTasks.create_current(db_config.env_name, db_config.spec_name)
Expand Down
16 changes: 16 additions & 0 deletions railties/test/application/rake/dbs_test.rb
Expand Up @@ -630,6 +630,22 @@ def db_test_load_structure
assert_match(/CreateRecipes: migrated/, output)
end
end

test "db:prepare does not touch schema when dumping is disabled" do
Dir.chdir(app_path) do
rails "generate", "model", "book", "title:string"
rails "db:create", "db:migrate"

app_file "db/schema.rb", "Not touched"
app_file "config/initializers/disable_dumping_schema.rb", <<-RUBY
Rails.application.config.active_record.dump_schema_after_migration = false
RUBY

rails "db:prepare"

assert_equal("Not touched", File.read("db/schema.rb").strip)
end
end
end
end
end

0 comments on commit 39b8df8

Please sign in to comment.