今回は下記を参考にさせていただきました。
はじめに
Railsアプリの本番環境でrails db:reset
を実行した所以下のエラーが出ました。
$ rails db:migrate:reset RAILS_ENV=production
rails aborted!
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate:reset => db:drop => db:check_protected_environments
(See full trace by running task with --trace)
原因
Rails5からはproduction環境で破壊的処理(内容は以下に記述)をすることができなくなっている。
db:drop
db:drop:all
db:reset
db:purge
db:purge:all
db:purge:test
db:schema:load
解決方法
ヒントはエラーメッセージに記載されている。
$ rails db:migrate:reset RAILS_ENV=production
rails aborted!
ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database.
If you are sure you want to continue, run the same command with the environment variable:
DISABLE_DATABASE_ENVIRONMENT_CHECK=1 ←ここ
環境変数としてDISABLE_DATABASE_ENVIRONMENT_CHECK=1
を指定することでコマンドを実行することができます。
$ rails db:migrate:reset RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1
Dropped database 'hogehoge_production'
Created database 'hogehoge_production'
== 20210311185651 DeviseCreateUsers: migrating ================================
以上です。