We just had a developer accidentally run
on our production database.
Why Rails not disables or at least guards this by default, I do not know.
We implemented this little check to disable the call in the future.
# lib/tasks/db.rake if Rails.env == 'production' tasks = Rake.application.instance_variable_get '@tasks' tasks.delete 'db:reset' tasks.delete 'db:drop' namespace :db do desc 'db:reset not available in this environment' task :reset do puts 'db:reset has been disabled' end desc 'db:drop not available in this environment' task :drop do puts 'db:drop has been disabled' end end end
... now back to fiddling with backups.