diff options
author | Yves Senn <yves.senn@gmail.com> | 2014-12-16 09:58:34 +0100 |
---|---|---|
committer | Yves Senn <yves.senn@gmail.com> | 2014-12-18 10:08:17 +0100 |
commit | 36ce0c2c821e2c9cca15e768842461f834825bf7 (patch) | |
tree | 7e1fbdc6ad9e5d03a9e3ab00ece9aad5fb9fe8a5 /railties/test | |
parent | c115a84c8b73363b281709a779a0fefbf7e46b13 (diff) | |
download | rails-36ce0c2c821e2c9cca15e768842461f834825bf7.tar.gz rails-36ce0c2c821e2c9cca15e768842461f834825bf7.tar.bz2 rails-36ce0c2c821e2c9cca15e768842461f834825bf7.zip |
`db:structure:load` and `db:schema:load` no longer purge the database.
Closes #17945
`db:test:prepare` still purges the database to always keep the test
database in a consistent state.
This patch introduces new problems with `db:schema:load`. Prior
to the introduction of foreign-keys, we could run this file against
a non-empty database. Since every `create_table` containted the
`force: true` option, this would recreate tables when loading the schema.
However with foreign-keys in place, `force: true` wont work anymore and
the task will crash.
/cc @schneems
Diffstat (limited to 'railties/test')
-rw-r--r-- | railties/test/application/rake/dbs_test.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/railties/test/application/rake/dbs_test.rb b/railties/test/application/rake/dbs_test.rb index 0a5873bcbf..c414732f92 100644 --- a/railties/test/application/rake/dbs_test.rb +++ b/railties/test/application/rake/dbs_test.rb @@ -156,6 +156,31 @@ module ApplicationTests end end + test 'db:schema:load and db:structure:load do not purge the existing database' do + Dir.chdir(app_path) do + `bin/rails runner 'ActiveRecord::Base.connection.create_table(:posts) {|t| t.string :title }'` + + app_file 'db/schema.rb', <<-RUBY + ActiveRecord::Schema.define(version: 20140423102712) do + create_table(:comments) {} + end + RUBY + + list_tables = lambda { `bin/rails runner 'p ActiveRecord::Base.connection.tables'`.strip } + + assert_equal '["posts"]', list_tables[] + `bin/rake db:schema:load` + assert_equal '["posts", "comments", "schema_migrations"]', list_tables[] + + app_file 'db/structure.sql', <<-SQL + CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255)); + SQL + + `bin/rake db:structure:load` + assert_equal '["posts", "comments", "schema_migrations", "users"]', list_tables[] + end + end + def db_test_load_structure Dir.chdir(app_path) do `rails generate model book title:string; |