2
votes

Rails: pendant la précompilation de l'actif, la clé d'erreur doit être de 16 octets

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


0 commentaires

3 Réponses :


2
votes

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


0 commentaires

1
votes

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


1 commentaires

34d3cc7c5305dde06865acfa473716cd n'est-il pas 32 octets?



0
votes

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"


0 commentaires