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 secretosem 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 № 1Quando 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.