rails secret_key_base ne pas être reconnu dans la production de
Donc je suis en train de déployer mon application rails dans la production. Quand je vais à la page j'ai une erreur 500. Quand je vais à mon des journaux d'erreur que j'obtiens l'erreur suivante:
Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`)
Je suis en cours d'exécution Rails 4.1 et ma config/secrets.yml ressemble à ceci:
development:
secret_key_base: <development key>
test:
secret_key_base: <test key>
# Do not keep production secrets in the repository,
# instead read values from the environment.
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
J'ai couru râteau secret pour obtenir la clé et mettre à l'exportation dans mon bash_profile et sourcée. J'ai couru râteau actifs:précompiler avec succès. Cependant je reçois cette erreur. Des idées?
Mise à jour: j'ai essayé de mettre à jour le message d'erreur afin de donner un peu mieux l'information....et le message n'a pas de mise à jour. J'ai ensuite essayé d'ajouter la clé directement sur le fichier yml au lieu d'utiliser une variable d'environnement et toujours pas de dés. Im en cours d'exécution sur ovh donc je ne peux pas redémarrer le serveur.....mais quelque chose me dit que c'est ce qui doit être fait...
Mise à jour 2: Après une nuit complète de sommeil, il semble que ce problème n'en est plus un. Il doit avoir été une sorte de mise en cache. Maintenant mon problème est que son essayez d'utiliser une vieille config que j'ai changé il y a de jours pour ma base de données. Si j'ai trouver comment annuler le cache, je vais le poster ici et de le marquer comme réponse. Si quelqu'un sait comment faire s'il vous plaît laissez-moi savoir et je vais le marquer comme réponse. J'utilise Ovh comme mon hébergement et suivi les étapes qu'ils ont sur leur site pour l'hébergement de mon application rails.
OriginalL'auteur Bill Garrison | 2014-04-10
Vous devez vous connecter pour publier un commentaire.
YourAppName::Application.initialize!
appelé dansconfig/environment.rb
vous ne pouvez pas modifier vos paramètres.Le problème n'est pas avec ENV pseudo-code de hachage. secret_key_base sera nul si dans ENV pas d'une telle clé.
Aussi, en 4.1 il n'y a pas de config/initializers/secret_token.rb. Il n'existe qu'une config/secrets.yml et que j'ai posté ci-dessus
Vérifiez vos paramètres de déploiement. Probablement vous avez besoin de spécifier config/secrets.yml dans linked_files (comme les bases de données.yml si vous utilisez capistrano)
je ne suis pas à l'aide de capistrano. avec ovh que vous venez de configurer un .fichier htaccess avec certains passagers configs et hop ça fonctionne. J'ai eu à travailler avec l'environnement de "développement", mais quand je suis passé à la "production" de son me donne des problèmes et de l'erreur est comme ci-dessus.
Vous êtes tout à fait correct pour cette. Pour référence future, de redémarrer un hostmonster passager serveur il suffit d'exécuter
touch tmp/restart.txt
à partir de votre application dans le répertoire de base. Une fois que je l'ai fait il a pris de mes nouvelles informations. Merci!OriginalL'auteur Mihail Davydenkov
J'ai eu le même problème et j'ai résolu de créer une variable d'environnement pour être chargé à chaque fois que je me connecte sur le serveur de production et fait un mini-guide des étapes à configurer par vous-même:
J'ai donc été à l'aide de Rails 4.1 à la Licorne v4.8.2 et quand j'ai essayé de déployer mon application, elle ne démarre pas correctement et dans la licorne.fichier journal, j'ai trouvé ce message d'erreur:
Après un peu de recherche, j'ai trouvé que les Rails 4.1 changement de la façon de gérer les secret_key, donc, si nous lisons le
secrets.yml
fichier situé àexampleRailsProject/config/secrets.yml
(vous devez remplacer "exampleRailsProject" pour votre nom de projet), vous trouverez quelque chose comme ceci:Cela signifie que les rails vous recommande d'utiliser une variable d'environnement pour le secret_key_base dans notre serveur de production, afin de résoudre cette erreur, vous devez suivre ces étapes pour créer une variable d'environnement pour linux (dans mon cas c'est Ubuntu) dans notre serveur de production:
1.- Dans le terminal de notre serveur de production, vous exécutez la commande suivante:
Cela donnera une grande chaîne de lettres et de chiffres, c'est ce que vous avez besoin, de sorte que la copie que (nous nous référerons à ce code comme GENERATED_CODE).
2.1 - Maintenant, si nous connecter en tant qu'utilisateur racine de notre serveur, nous aurons besoin de trouver ce fichier et de l'ouvrir:
Puis, nous partons à la fin du fichier ("SHIFT + G" pour les capitaux G VI)
Et nous allons écrire notre variable d'environnement avec notre GENERATED_CODE (touche "i" pour écrire à VI), assurez-vous d'être dans une nouvelle ligne à la fin du fichier:
Avoir écrit le code que nous enregistrer les modifications et fermez le fichier (nous appuyer sur "ECHAP", puis d'écrire ":x" et la touche "ENTRÉE" pour enregistrer et quitter VI)
2.2, Mais si nous connecter en tant qu'utilisateur normal, vous permet de l'appeler example_user pour ce résumé, nous aurons besoin de trouver un de ces autres fichiers:
Ces fichiers sont par ordre d'importance, ce qui signifie que si vous avez le premier fichier, puis vous n'avez pas besoin d'écrire dans les autres. Donc, si vous avez trouvé ces 2 fichiers dans votre répertoire "~/.bash_profile" et "~/.profil" vous ne devez écrire à la première de "~/.bash_profile", parce que linux va lire cette seule et les autres seront ignorés.
Puis, nous partons à la fin du fichier ("SHIFT + G" pour les capitaux G VI)
Et nous allons écrire notre variable d'environnement avec notre GENERATED_CODE (touche "i" pour écrire à VI), assurez-vous d'être dans une nouvelle ligne à la fin du fichier:
Avoir écrit le code que nous enregistrer les modifications et fermez le fichier (nous appuyer sur "ECHAP", puis d'écrire ":x" et la touche "ENTRÉE" pour enregistrer et quitter VI)
3.-Nous pouvons vérifier que notre variable d'environnement est définie correctement sous linux avec cette commande:
ou avec:
Lorsque vous exécutez cette commande, si tout est ok, il va vous montrer la GENERATED_CODE que nous avons généré avant. Enfin, avec toute la configuration effectuée, vous pouvez déployer sans problèmes de votre application Rails avec Licorne ou autre.
Maintenant, lorsque vous fermez votre terminal et connectez-vous à nouveau vers le serveur de production, vous aurez cette variable d'environnement et prêt à l'utiliser.
Et c'est tout!! J'espère que ce mini-guide vous aider à résoudre cette erreur.
OriginalL'auteur Demi Magus