Je stocke ma clé secrète dans l'environnement et /config/environments/production.rb a config.require_master_key = true non commenté
/Users/something/Development/wwwroot/trivial/config/environment.rb:5:in `<main>' /Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in `load' /Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>' Caused by: ArgumentError: key must be 16 bytes /Users/something/Development/wwwroot/trivial/config/environment.rb:5:in `<main>' /Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in `load' /Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>' Tasks: TOP => environment
Lors de l'exécution
RAILS_ENV=production bundle exec rake assets:precompile
3 Réponses :
Votre problème est que la clé que vous avez générée est plus longue que ce que les rails attendent https : //github.com/rails/rails/issues/33528#issuecomment-412677795
Solution
Vous pouvez en recréer une en supprimant votre master .key et credentials.yml.enc et exécutez
rails credentials:edit
J'ai rencontré le même problème lors de la configuration d'une application Rails 6.0 sur Ubuntu en production.
J'utilisais la gemme figaro pour mes variables d'environnement.
Le problème était que je copiais le contenu de la secret_key_base
au lieu de la master_key
Voici comment je l'ai résolu
Supprimer le précédent master.key
et le fichier credentials.yml.enc
Recréez un nouveau master.key
et informations d'identification .yml.enc
:
RAILS_MASTER_KEY: "34d3cc7c5305dde06865acfa473716cd"
OU
34d3cc7c5305dde06865acfa473716cd
Copier le contenu de la master.key, qui est de ce format:
EDITOR="code --wait" bin/rails credentials:edit # If you want to use VS Code as your editor
Remplacez ma valeur RAILS_MASTER_KEY
par la master_key en production:
rails credentials:edit
Et puis enregistrez-le.
Remarque : Vous pouvez également rencontrer ce problème si vous définissez / spécifiez un mauvais code RAILS_MASTER_KEY > variable d'environnement dans vos fichiers
.env
( .env
, .env.development
, .en v.test
, .env.production
). Supposons que vous souhaitiez simplement l'utiliser temporairement comme espace réservé. Cela peut également générer une erreur key = ': key doit être de 16 octets (ArgumentError)
si vous essayez de générer un nouveau master.key
et le credentials.yml. enc
fichiers utilisant les identifiants rails: éditez
ou EDITOR = "code --wait" bin / rails identifiants: modifiez
Ce que vous avez à faire est de fournir la bonne variable d'environnement RAILS_MASTER_KEY
dans le (s) fichier (s) .env
ou de commenter la variable d'environnement RAILS_MASTER_KEY
si vous êtes ne pas l'utiliser.
C'est tout.
J'espère que cela vous aidera
34d3cc7c5305dde06865acfa473716cd
n'est-il pas 32 octets?
Pour moi, je devais m'assurer de supprimer les guillemets autour de la clé dans mon fichier .env.
Il semble que mon serveur (AWS ECS Fargate) comptait le "" comme faisant partie de la clé. Au niveau local, tout allait bien.
Avant
RAILS_MASTER_KEY=12345
Après
RAILS_MASTER_KEY="12345"