web-dev-qa-db-fra.com

Secret_key_base manquant pour l'environnement 'de production',

Je ne peux tout simplement pas passer le message

Manquant secret_key_base pour l'environnement 'production', définissez cette chaîne avec Rails credentials:edit (ArgumentError)

J'ai ici Rails 5.2.0. Ran EDITOR=vim Rails credentials:edit et à l'intérieur:

production:
   secret_key_base: xxxxxxxxxxxxxxxxxxxxxxx

Enregistrez et, dans le terminal: Rails_ENV=production Rails c

Est-ce que je manque quelque chose? J'ai redémarré le serveur et le même problème. Aucun problème en mode de développement.

15
Sylar

Conserver par défaut le fichier secrets.yml

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

Rails_ENV = production SECRET_KEY_BASE = production_test_key Rails c

12
7urkm3n

Rails 5.2.0 nécessite une étape supplémentaire pour l'environnement de production:

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

Sans lui, Rails revient toujours à l'héritage secret.yml _ mécanisme (pour l'instant).

Christopher Rigor de Engine Yard a écrit un article concis dessus . La pièce pertinente:

Lire les lettres de créance

Si vous souhaitez utiliser les informations d'identification dans l'environnement de production, ajoutez ce qui suit à config/environments/production.rb

config.require_master_key = true

Une bonne lecture à voir aussi de haut en bas.

Remarque: Comme @TomDogg l'a découvert, Rails 5.2.1 semble à nouveau différent, cette réponse ne peut donc s'appliquer qu'à 5.2.0.

15
Eric Platon

Il n'y a pas production:development: et test: balises d’environnement dans le fichier d’identifiants. Plus d'informations dans ce message de DHP: https://github.com/Rails/rails/pull/30067

Alors écrivez directement

secret_key_base: xxxxxxxxxxxxxxxxxxxxxxx

S'il vous plaît ne confondez pas la clé principale avec la base de clé secrète. La clé principale est utilisée pour ouvrir le fichier crypté des informations d'identification.

Le retour à l'ancien système de secrets ne devrait pas être la solution, ni la réponse acceptée.

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.

Assurez-vous également que vous respectez toutes les règles d'indentation YAML (c'est-à-dire deux espaces seulement), car le chargement de ce fichier échoue de manière silencieuse.

0
TomDogg