Для предотвращения случайных 'граблей db:reset' на наших продуктивных средах я думал об отключении 'граблей db:reset' и связал задачи, которые отбрасывают базу данных в продуктивной среде. Существует ли простой способ сделать это, или я должен переопределить задачу граблей?
Существует ли лучшая альтернатива?
В lib/db.rake:
namespace :db do
desc 'Resets your database using your migrations for the current environment'
task :reset do
if RAILS_ENV == 'production'
Rake::Task["db:drop"].invoke
Rake::Task["db:create"].invoke
Rake::Task["db:migrate"].invoke
end
end
end
В файл Rake можно добавить
Rake.application.instance_variable_get('@tasks').delete('db:reset')
, и команда больше недоступна. Если требуется отключить несколько команд, поместите их в метод remove _ task
для удобства чтения.
Но лучшая альтернатива, кажется, просто не ввести команду rake db: reset
, которая не является тем, что вы бы случайно ввести.
Хорошее резервное копирование вашей (производственной) базы данных также является лучшим решением, я полагаю.