[解決済み] エラー「Missing `secret_key_base` for 'production' environment」を解決する方法 (Rails 4.1)
質問
Rails 4.1を使用して、ゼロからRailsアプリケーションを作成しましたが、解決できない奇妙な問題に直面しています。
Herokuにアプリケーションをデプロイしようとすると、毎回500エラーが発生します。
Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`
は
secret.yml
ファイルには、次のような設定があります。
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Herokuでは、"を設定しました。
SECRET_KEY_BASE
の結果を環境変数に代入しています。
rake secret
コマンドを実行します。もし私が
heroku config
正しい名前と値を持つ変数を見ることができます。
なぜこのエラーが発生するのでしょうか?
解決方法を教えてください。
私も同じ問題があり、本番サーバーにログインするたびに読み込む環境変数を作り ミニガイド を設定する手順を説明します。
Rails 4.1 と Unicorn v4.8.2 を使っていたのですが、アプリケーションをデプロイしようとするとうまく起動せず、その中の
unicorn.log
ファイルには、このようなエラーメッセージがありました。
app error: Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml` (RuntimeError)
調べてみると、Rails 4.1 で
secret_key
を読むと
secrets.yml
にあるファイルを
exampleRailsProject/config/secrets.yml
をクリックすると、次のようなものが表示されます。
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
つまり、Railsでは環境変数で
secret_key_base
を実行する必要があります。このエラーを解決するには、以下の手順に従って、本番サーバーでLinux(私の場合はUbuntu)用の環境変数を作成する必要があります。
-
本番サーバーのターミナルで以下を実行します。
$ RAILS_ENV=production rake secret
これは、文字と数字を含む大きな文字列を返します。これをコピーして、そのコードを
GENERATED_CODE
. -
サーバーにログイン
-
ルートユーザーでログインした場合、このファイルを見つけて編集してください。
$ vi /etc/profile
を使用してファイルの一番下に移動します。 シフト + G (大文字の"G")がviに含まれています。
で環境変数を記述します。
GENERATED_CODE
を押すと i でviに挿入します。必ずファイル末尾の改行で。$ export SECRET_KEY_BASE=GENERATED_CODE
変更を保存して、ファイルを閉じるには エスケープ と入力し、"
:x
となります。 入力 で保存し、viで終了します。 -
しかし、通常のユーザーでログインした場合、仮に"とします。
example_user
"このgistのために、あなたはこれらの他のファイルのいずれかを見つける必要があります。$ vi ~/.bash_profile $ vi ~/.bash_login $ vi ~/.profile
これらのファイルは重要な順に並んでいます。つまり、最初のファイルさえあれば、他のファイルを編集する必要はないでしょう。もし、あなたのディレクトリに以下の2つのファイルがあったとします。
~/.bash_profile
と~/.profile
を書くだけです。~/.bash_profile
Linuxはこの1つだけを読み、他は無視されるからです。次に、ファイルの最下部にある シフト + G をもう一度書き、環境変数に我々の
GENERATED_CODE
を使って i もう一度、ファイルの最後に改行を追加してください。$ export SECRET_KEY_BASE=GENERATED_CODE
コードを書き終えたら、変更を保存してファイルを閉じます。 エスケープ をもう一度、"
:x
となります。 入る をクリックして保存し、終了します。
-
-
Linuxでは、このコマンドで環境変数が正しく設定されていることを確認できます。
$ printenv | grep SECRET_KEY_BASE
で、あるいは
$ echo $SECRET_KEY_BASE
このコマンドを実行すると、すべてがうまくいっていれば
GENERATED_CODE
を実行します。最後に、すべての設定が完了したら、Unicornや他のツールでRailsアプリケーションを問題なくデプロイできるはずです。
シェルを閉じて本番サーバーに再ログインすると、この環境変数が設定されており、使用できるようになっています。
そして、これで終わりです この ミニガイド このエラーを解決するのに役立ちます。
免責事項: 私はLinuxやRailsのグルではないので、何か間違ったことやエラーが見つかったら、喜んで修正させていただきます。
関連
-
[解決済み】Rails。Ruby on Railsの移行でデータベースカラムの名前を変更するにはどうすればよいですか?
-
[解決済み】gemのインストールができない - gemネイティブ拡張の構築に失敗 - そのようなファイルをロードできない -- mkmf (LoadError)
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み] Mac OS Xにhomebrewがインストールされているかどうかを確認する方法
-
[解決済み] Rails のインストールに失敗する: activesupport には Ruby のバージョン >= 2.2.2 が必要です。
-
[解決済み] PG::ConnectionBad - サーバーに接続できませんでした。接続が拒否されました。
-
[解決済み] Ruby on Railsのためにnetbeansを構成する方法は?
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] 属性とカラムの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】コントローラでJSONをレンダリングする
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み] Railsです。NameError: 初期化されていない定数
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] railsでhidden fieldタグを使用する方法
-
[解決済み] レイル 4 radio_button_tag default not selected
-
[解決済み] Railsコンソール:リロード!モデルファイルの変更が反映されない?考えられる理由は何でしょうか?
-
[解決済み] キーと値のペアのファイルから環境変数を設定する