diff options
author | Jay Hayes <ur@iamvery.com> | 2015-04-26 22:21:54 -0500 |
---|---|---|
committer | Jay Hayes <ur@iamvery.com> | 2015-10-20 19:17:58 -0500 |
commit | c2e597a7362fd0b497da7c622717406bb70cd360 (patch) | |
tree | 4023a1bc02296e0b82cde8676adabcb727fc5e86 | |
parent | 2893e6c0a459a91a033d357cd15cc4d14e7acbc1 (diff) | |
download | rails-c2e597a7362fd0b497da7c622717406bb70cd360.tar.gz rails-c2e597a7362fd0b497da7c622717406bb70cd360.tar.bz2 rails-c2e597a7362fd0b497da7c622717406bb70cd360.zip |
Exit with non-zero status when db:drop fails
* If the drop task fails for a reason other than the database not
existing, processing should end. This is indicated by a non-zero
exit status.
* Since the backtrace is already printed to screen, we forgo
printing it again by using an explicit call to `exit`.
* :warning: This modifies the behavior of the db:create task slightly in
that the stack trace is no longer printed by default. If the `--trace`
option is used, it will print the trace _after_ the error message.
-rw-r--r-- | activerecord/lib/active_record/tasks/database_tasks.rb | 3 | ||||
-rw-r--r-- | railties/test/application/rake/dbs_test.rb | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/tasks/database_tasks.rb b/activerecord/lib/active_record/tasks/database_tasks.rb index f243bf4bfc..c0c29a618c 100644 --- a/activerecord/lib/active_record/tasks/database_tasks.rb +++ b/activerecord/lib/active_record/tasks/database_tasks.rb @@ -116,8 +116,9 @@ module ActiveRecord rescue ActiveRecord::NoDatabaseError $stderr.puts "Database '#{configuration['database']}' does not exist" rescue Exception => error - $stderr.puts error, *(error.backtrace) + $stderr.puts error $stderr.puts "Couldn't drop #{configuration['database']}" + raise end def drop_all diff --git a/railties/test/application/rake/dbs_test.rb b/railties/test/application/rake/dbs_test.rb index bd885b520e..f94d08673a 100644 --- a/railties/test/application/rake/dbs_test.rb +++ b/railties/test/application/rake/dbs_test.rb @@ -91,6 +91,16 @@ module ApplicationTests end end + test 'db:drop failure because bad permissions' do + with_database_existing do + with_bad_permissions do + output = `bin/rake db:drop 2>&1` + assert_match /Couldn't drop/, output + assert_equal 1, $?.exitstatus + end + end + end + def db_migrate_and_status(expected_database) Dir.chdir(app_path) do `bin/rails generate model book title:string; |