Heroku 環境変数の設定漏れでpush時の対処法

環境変数の設定=>commit=>pushが基本!

備忘録

開発環境(githugとHeroku)

基礎情報

credentials.yml.encファイル
=>Railsにて、外部に漏らしたくない情報を扱う際に用いるファイルです。
master.keyファイル
=>credentials.yml.encの暗号文を復号する、鍵の役割を持ったファイルのこと。 特定のcredentials.yml.encファイルのみ復号する

デプロイをする際、外部に漏らしたくない情報はセキュリティの観点から暗号化する必要があります。

本来の作業の流れ

credentials.yml.encファイルと対になるmaster.keyを環境変数として設定

#環境変数の設定方法
% heroku config:set 環境変数名="値"
#サンプル
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
#設定後、環境変数確認
% heroku config

コミット
プッシュ

環境変数の設定漏れでpush時の対処法

環境変数をHerokuの本番環境に反映させるためには、Herokuで環境変数を設定した上でプッシュする必要があります。
しかし、環境変数を設定し忘れた状態でプッシュしてしまった場合、環境変数を設定した上でもう一度プッシュする必要があるため、
①新しいコミット履歴がある場合(ファイルの変更履歴が存在する場合)
②ファイルの変更履歴が存在しない場合
に分けて対応方法を記述

新しいコミット履歴がある場合

環境変数を設定後以下の通り
ファイルの変更履歴が存在する場合は、Chengeに上がってくるので

コミットする
% git add .
% git commit -m "後から見てわかりやすいコミット名"
git push heroku masterを実行しましょう

先ほど作成したコミットをHerokuへプッシュ

% git push heroku master

ファイルの変更履歴が存在しない場合

Herokuの仕様上、最新のコミット履歴が存在しない状態でgit push heroku masterコマンドを実行しても下記のように「Everything up-to-date(すでに最新の状態に更新されています)」と表示されます。
環境変数を設定後以下の通り

空のコミットを生成する
% git commit --allow-empty -m "空のcommit" 

GitHub Desktopで空のコミット履歴を確認できればOK

git push heroku masterを実行

先ほど作成したコミットをHerokuへプッシュ

% git push heroku master