/ / Rails 4.2.3 secret_key_base não está sendo definido a partir de segredets.yml para ambientes de desenvolvimento / teste com todas as outras variáveis ​​sendo definidas corretamente - ruby-on-rails, ruby, ruby-on-rails-4, variáveis ​​de ambiente, ambiente de desenvolvimento

Trilhos 4.2.3 secret_key_base não está sendo definido a partir de segredets.yml para ambientes de desenvolvimento / teste com todas as outras variáveis ​​sendo definidas corretamente - ruby-on-rails, ruby, ruby-on-rails-4, variáveis ​​de ambiente, ambiente de desenvolvimento

Estou executando um Rails 4.2.3 aplicativo que é executado em produção quando implementado e com variáveis ​​de ambiente definidas por meio do Heroku. No entanto, meus ambientes de desenvolvimento e teste de repente começaram a falhar com esse erro:

DEPRECATION WARNING: You didn"t set `secret_key_base`. Read the upgrade documentation to learn more about this new config option. (called from service at /Users/Benjamin/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/webrick/httpserver.rb:138)

De acordo com tudo que eu encontrei no StackOverflow e em outros lugares, isso provavelmente tem algo a ver com o meu arquivo secrets.yml:

desenvolvimento: secret_key_base: LONG-KEY  teste: secret_key_base: LONG-KEY

Eu tentei redefinir essas chaves com

ancinho secreto
sem sucesso. Eu tenho outras variáveis ​​de ambiente definidas em secrets.yml que estão sendo configuradas corretamente, mas quando executo Rails.application.secrets.secret_key_base do console, continuo recebendo nil.

Qualquer ajuda seria muito apreciada.

Respostas:

1 para resposta № 1

Quando você diz que tentou redefini-las comrake secreto o que você quer dizer? Você copiou e colou as chaves do console em segredets.yml nos pontos corretos e salvou? Enquanto ambas as teclas estiverem lá, são pelo menos 30 chars long (eles seriam 128 chars long no seu caso tendo u usado rake secret) você deve estar tudo pronto. Eu suponho que seu arquivo segredos.yml está localizado em config /.

Além disso, o aviso de descontinuidade é um aviso nãoerro. Enquanto as chaves estiverem no segredos.imo, você não precisará fazer mais nada. Executar o rake secret e substituir as teclas por novas é desnecessário, contanto que você tenha chaves lá (de pelo menos 30 chars) não importa quais são as chaves.

Espero que isto ajude. Se você ainda estiver com dificuldades, poste o erro de tempo de execução e esperamos que ele forneça mais informações sobre o que está errado.


1 para resposta № 2

Este não é o seu problema, mas eu passei horas sobre esta questão, que também estava me dando o mesmomensagem de erro de "secret_key_base" não está sendo definida para o início do servidor de trilhos de produção. Estou executando o Rails ver. 4.2.5.1, Ruby ver. 2.3.0, WEBrick 1.3.1, com o servidor de desenvolvimento e produção executando experimentalmente em uma caixa Linux do CentOS 6.6. Meu erro foi uma novidade completa .. Eu havia seguido as etapas para configurar um SECRET_BASE_KEY para produção e estou usando o arquivo secrets.yml, com o ambiente var sendo usado para definir a chave, conforme documentos do Rails e outros relatórios do Stackoverflow. Mas eu estava começando meu servidor de produção com:

servidor bin / rails - binding = 0.0.0.0 -p 3000 -e = produção

o que está errado. O formato curto "-e" não possui sinal de igual. Mas o erro que recebi foi porque o código no arquivo secrets.yml estava procurando algo chamado "= production:" e o rótulo "production:". A expressão correta para iniciar o servidor no modo de produção é claro:

servidor bin / rails - binding = 0.0.0.0 -p 3000 -e produção

A outra pista, era que o servidor estava relatando que "config.eager_load" estava configurado para nil, quando na verdade ele foi configurado para ser configurado no arquivo ../config/environments/production.rb.

Espero que isso ajude alguém. Eu sou um novato completo no Rails + Ruby, mas eu finalmente tenho um servidor de teste em execução em um modo de produção, com as várias configurações aplicadas conforme o esperado.