it-swarm-pt.tech

Secret_key_base ausente para o ambiente de 'produção',

Eu simplesmente não consigo passar a mensagem

Falta secret_key_base para o ambiente de 'produção', defina essa sequência com Rails credentials:edit (ArgumentError)

Eu tenho aqui Rails 5.2.0. Correu EDITOR=vim Rails credentials:edit e por dentro:

production:
   secret_key_base: xxxxxxxxxxxxxxxxxxxxxxx

Salve e, no terminal: Rails_ENV=production Rails c

Estou esquecendo de algo? Eu reiniciei o servidor e o mesmo problema. Não há problema no modo de desenvolvimento.

15
Sylar

Mantenha como padrão o arquivo secrets.yml

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

Rails_ENV = produção SECRET_KEY_BASE = production_test_key Rails c

12
7urkm3n

O Rails 5.2.0 requer um estágio extra para o ambiente de produção:

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

Sem ele, Rails ainda volta ao mecanismo herdado secret.yml (por enquanto).

Christopher Rigor do Engine Yard escreveu um post conciso . A peça relevante:

Lendo as credenciais

Se você deseja usar as credenciais no ambiente de produção, adicione o seguinte a config/environments/production.rb

config.require_master_key = true

Uma boa leitura para ver também os lados para cima e para baixo.

Nota: Como o @TomDogg descobriu, o Rails 5.2.1 parece novamente diferente, portanto, esta resposta pode ser aplicada apenas ao 5.2.0.

15
Eric Platon

Não há tags de ambiente production:development: e test: no arquivo de credenciais. Mais informações na publicação deste DHH: https://github.com/Rails/rails/pull/30067

Então escreva diretamente

secret_key_base: xxxxxxxxxxxxxxxxxxxxxxx

Por favor, não confunda a chave mestra com a base da chave secreta. A chave mestra é usada para abrir o arquivo criptografado das credenciais.

Voltar ao sistema de segredos anterior não deve ser a solução nem a resposta aceita.

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.

Além disso, certifique-se de respeitar todas as regras de indução do YAML (ou seja, apenas 2 espaços), caso contrário, faça com que o carregamento desse arquivo falhe silenciosamente.

0
TomDogg