11

Rails 4.2 での運用には secret_key_base と secret_token の両方が必要ですか? どちらも設定しないと、次の例外メッセージが発生します。

欠落secret_tokenしておりsecret_key_base、「本番」環境の場合は、これらの値をに設定しますconfig/secrets.yml

4.2 アップグレード ガイド ( http://railsapps.github.io/updating-rails.html ) には次のように書かれています。

rails new コマンドを使用して新しい Rails アプリケーションを作成すると、一意の秘密鍵が生成され、config/initializers/secret_token.rb ファイルに書き込まれます。

しかし、アプリを生成したときにそのようなファイルは作成されず、config/secrets.yml には secret_token への参照がありません。

エラー メッセージが間違っていて、必要なのは secret_key_base だけだと思います。開発マシンで実稼働環境でアプリを実行すると、secret_key_base だけで開始されますが、Engineyard では、(環境変数を介して) secret_key_base を設定しても機能しません。それでもエラーが発生します。

4

4 に答える 4

5

Engine Yard で発生している問題は、secret_key_base 環境変数が (まだ) デフォルトで存在しないためです。それは私たちが取り組んでいるものです。カスタムシェフを使用して、自分で配置できます。詳細については、サポート チームにお問い合わせください。

実際に発生しているエラーについては、新しい Rails 4.2 アプリ (「rails new foo」) をテストして、secret_token.rb が生成されているかどうかを確認しましたが、そうではありません。ここで必要なのは、config/secrets.yml を作成することだと思います。そのファイルは次のようになります。

development:
  secret_key_base: somekey

test:
  secret_key_base: someotherkey

# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

ENV["SECRET_KEY_BASE"] が表示されている場合、Engine Yard には少しひねりが加えられています。リポジトリがプライベートである限り、自分で何かをハードコーディングできます。そうしないと、カスタム Chef を使用すると、秘密鍵ベースを作成し、それをアプリ ワーカー プロセスの起動を担当するラッパー スクリプトに配置することで、四角になってしまう可能性があります (たとえば、プラットフォームの config/env.custom など)。

お役に立てれば。

于 2015-02-27T14:34:46.713 に答える
2

少なくともRails 4.2.2でも同じエラーが発生しましたがSECRET_KEY_BASErailsユーザーの.bash_profileファイルに環境変数を設定することで問題が解決したので、少し間違ってsecret_tokenいるようです-おそらく以前のバージョンからの持ち越しです。

コマンドを実行してシークレットを生成し、生成された文字列を次のようrake secretにファイルで使用します。.bash_profile

export SECRET_KEY_BASE='the_output_of_the_rake_secret_command'
于 2015-08-27T04:00:30.593 に答える
2

4.2 は秘密鍵を使用し、投稿したリンクには探しているソリューションがあります。

秘密鍵がアクティブにならない環境では、 を使用して秘密鍵を生成しrake secret、コンソールからの出力をconfig/initializers/secret_token.rbファイルに配置する必要があります (存在しない場合は作成できます)。

の使用を避けるオプションがありますsecrets.yml。多くの人は、秘密情報を処理するために別の gem/procedure (例: figaro ) を使用することを好みます。生活を簡素化するために、この情報をsecret_token.rbファイルに入れて先に進むことができます。または、状況を処理するための他のさまざまな慣用的な方法を学ぶこともできます。

于 2015-02-27T14:20:52.520 に答える