Je ne peux tout simplement pas passer le message
Manquant
secret_key_base
pour l'environnement 'production', définissez cette chaîne avecRails 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.
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
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.
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.
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.