web-dev-qa-db-ja.com

「本番」環境のsecret_key_baseがありません。

私は単にメッセージを通過することはできません

「本番」環境のsecret_key_baseがありません。この文字列をRails credentials:edit(ArgumentError)で設定します

ここにRails 5.2.0があります。 Ran EDITOR=vim Rails credentials:editおよび内部:

production:
   secret_key_base: xxxxxxxxxxxxxxxxxxxxxxx

保存して、ターミナルで:Rails_ENV=production Rails c

何か不足していますか?サーバーを再起動しましたが、同じ問題があります。開発モードでは問題ありません。

15
Sylar

Secrets.ymlファイルをデフォルトのままにする

# config/secrets.yml
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

Rails_ENV =生産SECRET_KEY_BASE = production_test_key Rails c

12
7urkm3n

Rails 5.2.0では、実稼働環境用に追加のステージが必要です。

config.require_master_key = true    # in config/environments/production.rb

それなしでは、Railsはまだ従来のsecret.ymlメカニズム(今のところ)にフォールバックします。

Engine YardのChristopher Rigor 簡潔な投稿を書いています 。関連する部分:

資格情報の読み取り

実稼働環境で資格情報を使用する場合は、config/environments/production.rbに以下を追加します

config.require_master_key = true

また、上下を見るのに良い読み物です。

注:@TomDoggが発見したように、Rails 5.2.1は再び異なるように見えるため、この回答は5.2.0にのみ適用される場合があります。

15
Eric Platon

クレデンシャルファイルにproduction:development:およびtest:環境タグがありません。このDHHの投稿の詳細: https://github.com/Rails/rails/pull/30067

だから直接書く

secret_key_base: xxxxxxxxxxxxxxxxxxxxxxx

マスターキーとシークレットキーベースを混同しないでください。マスターキーは、資格情報で暗号化されたファイルを開くために使用されます。

以前の秘密システムに戻すことは解決策でもなければ、受け入れられる答えでもありません。

3
LightMan

config/credentials.yml.enc:

development:
  some_username: XXXXXXXXX
  some_password: YYYYYYYYY

test:
  some_username: XXXXXXXXX
  some_password: YYYYYYYYY

production:
  some_username: XXXXXXXXX
  some_password: YYYYYYYYY

secret_key_base: ZZZZZZZZZ
# `secret_key_base:` must NOT be indented !
# It must be put at the very start of a new line.
# There is also no need for it in development or test environment,
#   since there are no attacks to be expected.

また、すべてのYAMLインデント規則(つまり、2つのスペースのみ)を尊重していないことを確認して、このファイルの読み込みがサイレントに失敗するようにしてください。

0
TomDogg