web-dev-qa-db-fra.com

Exécution d’un serveur Rails en production localement (erreur InvalidMessage)

J'utilise Ruby 2.5.1 et Rails 5.2.0. J'ai couru Rails s -e production, et cela donne cette erreur:

/home/roy/.rbenv/versions/2.5.1/lib/Ruby/gems/2.5.0/gems/activesupport-5.2.0/lib/active_support/message_encryptor.rb:206:in `rescue in_decrypt': ActiveSupport::MessageEncryptor::InvalidMessage
(ActiveSupport::MessageEncryptor::InvalidMessage)

Comment puis-je le faire correctement?


EDIT: La même erreur apparaît chaque fois que j'essaie de modifier le fichier d'informations d'identification à l'aide de

EDITOR="nano --wait" bin/Rails credentials:edit

J'ai aussi réalisé que je n'avais pas encore créé de base de données de production, alors j'ai essayé d'utiliser

Rails_ENV=production bundle exec Rails db:reset

(Je sais que db: reset est un peu redondant mais cela devrait fonctionner en essayant de créer, migrer et semer un serveur)

Malheureusement, j'obtiens le même type d'erreur (erreur InvalidMessage)

Unsupported Rails environment for compass
rake aborted!
ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage
/home/roy/apps/myappname/config/environment.rb:5:in `<main>'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'

Caused by:
OpenSSL::Cipher::CipherError: 
/home/roy/apps/myappname/config/environment.rb:5:in `<main>'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/home/roy/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
Tasks: TOP => db:create => db:load_config => environment
5
royketelaar

Ok je l'ai fait travailler finalement.

J'ai simplement supprimé mon fichier master.key et credentials.yml.enc puis exécuté 

bin/Rails credentials:edit

Qui a créé de nouveaux fichiers. Après cela, tout a bien fonctionné.

Je ne comprends pas vraiment pourquoi cela fonctionne bien. Quelqu'un peut-il donner une bonne explication à cela?

14
royketelaar

Il semble que votre solution de supprimer master.key et credentials.yml.enc indique que vous exécutez Rails 5.2. Cette configuration a changé par rapport à un fichier secrets.yml.enc crypté similaire à celui utilisé dans Rails 5.1.

L'objectif est d'autoriser la validation de clés secrètes (AWS, secrect_key_base de Rails) dans le référentiel de code d'un projet. Celles-ci sont généralement définies avec des variables ENV. Désormais, les collaborateurs n'ont plus qu'à partager le master.key généré pour décrypter, modifier ou lire le contenu de credentials.yml.enc.

Lorsque vous avez supprimé les fichiers master.key et credentials.yml.enc, Rails a généré une nouvelle paire. Vous avez maintenant été en mesure de déchiffrer credentials.yml.enc. Ce fichier a été initialisé avec une nouvelle valeur Railssecret_key_base nécessaire pour éviter le ActiveSupport::MessageEncryptor::InvalidMessage. Si vous localisez la source de ce message, il est probable qu'il fasse référence à la base de clé secrète des informations d'identification Rails: Rails.application.credentials.secret_key_base.

Ce sont de beaux articles sur le sujet:
https://medium.com/cedarcode/Rails-5-2-credentials-9b3324851336https://www.engineyard.com/blog/Rails-encrypted-credentials-on -Rails-5.2

1
gib