HerokuでホスティングしているRailsアプリのDB構造を変えて、 rails db:migrate:resetしたくなったんだけど、そのままのコマンドではだめだったので調査した。

失敗したときのログがこちら

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

どうやら、productionのDBを破壊するようなコマンドはそのままでは通らないらしい。 ということで、ここに書かれているように、DISABLE_DATABASE_ENVIRONMENT_CHECK=1にして実行する。以下にようにコマンドに続けて環境変数をセットするだけ。

$ heroku run rails db:migrate:reset DISABLE_DATABASE_ENVIRONMENT_CHECK=1

ちなみに、このようにコマンドに続けて環境変数をセットしただけだと、一時的に環境変数を変えるだけなので安心。 常にDISABLE_DATABASE_ENVIRONMENT_CHECK=1にしておきたい場合は、

$ heroku config:set DISABLE_DATABASE_ENVIRONMENT_CHECK=1

とすればよいが、危険なので推奨しない。