Estou desenvolvendo um aplicativo Rails 4 usando a gem Active Admin para o back-end de administração. O Active Admin, por sua vez, usa o Devise para autenticação do usuário. Agora, quando tento implantar o aplicativo usando capistrano
o servidor VPS, recebo o erro abaixo:
rake aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '-- secret key --'
Uma pesquisa no Google não ajuda muito a esse erro. Alguma sugestão de por que está gerando um erro? Devo adicionar a chave secreta ao devise
inicializador, pois não consigo encontrar nenhum lugar para definir essa chave de configuração initializers/devise.rb
?
ruby-on-rails
devise
Scarver2
fonte
fonte
secret key
. Além disso, se você estiver executando uma instalação nova, o aplicativo deve cuidar disso. Graças ao tíquete em github.com/plataformatec/devise/issues/2554, ele foi resolvido.Respostas:
Corri
bundle update
esta manhã e comecei a receber o mesmo erro.Eu adicionei como uma linha
config/initializers/devise.rb
e o erro foi corrigido.Este parece ser o commit que o introduziu.
fonte
SECRET_KEY_BASE
variável de ambiente em vez de copiá-la parasecrets.yml
não esquecer que sua "chave secreta" não é segredo o suficiente!O que funcionou para mim no Rails 4.1 e no Devise 3.2.4 está em
config/initializers/devise.rb
:fonte
figaro
gema:config.secret_key = Figaro.env.devise_secret_key if Rails.env.production?
A partir do Devise 3.2.3 para aplicativos Rails 4+, o local de configuração da chave é padronizado como YourAppName :: Application.config.secret_key_base encontrado em config / initializers / secret_token.rb
fonte
Isso resolveu meu problema:
Adicione o código abaixo ao seu arquivo config / initializers / devise.rb .
Substitua '- chave secreta--' por sua própria chave. Eu recomendo armazená-lo em uma variável ENV para fins de segurança.
fonte
ENV["your_particular_secret_key_name"]
. Em seguida, seu aplicativo faz referência a suas chaves dinamicamente. Mas você ignorou suas chaves, então como colocá-las em seu ambiente de produção? Você os envia diretamente do seu ambiente de desenvolvimento local para o heroku usando figaro, e suas chaves secretas acabarão como variáveis de ambiente no herokuDe acordo com o changelog :
Eu fui
config/secrets.yml
e alterei oproduction
valor.Antes:
Depois de:
Claro, isso deve ser definido para a variável de ambiente, que irei definir mais tarde, mas pelo menos isso o fez funcionar. Peguei minha corda usando
bundle exec rake secret
.fonte
Será que você não correu
rails g devise:install
?Executar
rails generate devise User
sem o comando anterior causa esse problema.fonte
rails g devise user
antes de tentar criar a tabela de usuários e migrar. Isso resolveu o problema.Em
config/initializers/devise.rb
eu coloquei:Porque se você colocar:
Você verá um
secret_key_base
para o modoproduction
.fonte
Resolvo meu problema de inicializador com esta abordagem feia:
em config / initializers / devise.rb Agora funciona tanto em produção quanto em desenvolvimento!
fonte
Clonei meu repositório em uma nova máquina a partir do git. o
arquivo estava na minha lista .gitignore, então esse arquivo não existia e o Devise não cria o arquivo.
Eu adicionei o arquivo e executei novamente
e funcionou.
fonte
secrets.yml
ao meu.gitignore
arquivo. Eu não dei uma leitura completa e fiquei vagamente impressionado que incluía muito mais do que o.gitignore
arquivo Rails gerado . : facepalm:Verifique se o seu
config\initializers\secret_token.rb
tem:Deveria ser:
fonte
Eu tenho o mesmo problema. O problema foi causado por estas linhas em
routes.rb
:Eu comentei e depois disso eu corro:
E foi avaliado perfeitamente. E depois disso, descomentei as rotas.
fonte
rails generate devise:install
antes de criar meu primeiro modelo de desenvolvimento. De acordo com esta resposta, comentei a linha devise_for nas rotas e execute o comando generate, e funciona.devise_for
linha para obter o meu rake db: migrate to work .. embora não tenha ideia do porquêBom, tenho acompanhado esse post e experimentei quase tudo aqui. Eu adicionei a chave a
devise.rb
. Mas ainda estava recebendo o mesmo erro.Talvez uma resposta estúpida, mas tudo que tive que fazer foi empurrar a
devise.rb
chave para o repositório.fonte
Consertar:
No servidor de produção:
Em seguida, no arquivo, adicione:
para definir isso permanentemente, e em todo o sistema (todos os usuários, todos os processos), adicione definir a variável
No
devise.rb
arquivo de projeto local :Detalhes técnicos:
fonte
Teve o mesmo problema com Rails 5.2.0 e Devise 4.4.1
Solte o seguinte em /config/initializers/devise.rb
fonte
Tentando dar uma resposta um pouco mais completa para as acima: Como mencionado na documentação da gem devise_auth_token
Eu tive o mesmo problema e, como mencionado aqui, criei o inicializador do devise e adicionei a
config.secret_key = ENV['DEVISE_SECRET_KEY']
linha a ele.fonte
Não sei a solução certa mas está funcionando. Você pode experimentá-lo. Fui clonado meu projeto de minha conta GitLab e quando executo em meu servidor local, recebo uma mensagem de erro:
rake aborted! Devise.secret_key was not set. Please add the following to your Devise initializer: config.secret_key = '-- secret key --'
Abra
config/initializers/devise.rb
e adicione esta linhaconfig.secret_key = '<%= ENV["SECRET_KEY_BASE"] %>'
Esta linha de código resolveu meu problema.
fonte
<%= %>
como interpolação de string. Sua chave será literalmente o que você digitou dentro da string literal' what ever the %he!@#$ you type here is your key no matter what characters'