Nouvelle application Rails.
Rails version 5.0.0.1, Ruby version 2.4.0preview2.
Créez une application "démo", exécutez un simple produit généré par un échafaudage et obtenez une erreur lorsque vous essayez d'afficher la page de synthèse de l'échafaud (le fichier d'index de base charge toujours l'écran de bienvenue dans Rails):
ArgumentError dans ProductsController # index Doit avoir une taille de 32 octets:
cipher = new_cipher
cipher.encrypt
cipher.key = @secret
# Rely on OpenSSL for the initialization vector
iv = cipher.random_iv
La ligne de problème est apparemment cipher.key = @secret.
J'ai vu diverses mentions dans le dépôt github de Rails mentionnant ce problème, mais tout impliquait qu'il était maintenant résolu dans Rails 5.0.0.1
Ok, il y a eu un léger malentendu de ma part, on dirait que le correctif arrive 5.0.1 et non 5.0.0.1
essaye ça:
rake db:create
rake db:migrate
alors, la chose la plus importante:
bundle update
Cela fonctionne pour moi.
Problème enfin trouvé! C'était à partir d'un bug ... https://bugs.Ruby-lang.org/issues/12561
Si vous utilisez un chiffrement, par exemple 'aes-256-cfb', le key_len
est 32, trouvé par:
require 'openssl'
cipher = OpenSSL::Cipher.new('aes-256-cfb')
cipher.key_len # => 32
Nous avions pensé à tort que nous devions envoyer un nonce de 256 caractères, mais vous êtes censé envoyer un nonce de 32 caractères - ou Use cipher.random_key
(qui utilise en interne le key_len
). Cela n’a jamais été un problème car openssl a tronqué le nonce ... mais maintenant, vous devez envoyer le nonce de la bonne longueur.
Nous avons eu cette erreur lors de la mise à niveau de Ruby de 2.3.4 à 2.4.2.
Solution :
Rational : La version de Rails antérieure à la version 5.0.0 semble contenir un bogue qui cause ce problème. Le bogue a été résolu dans la dernière version de Rails. Si vous suivez le Guide d'installation Rails ( http://railsapps.github.io/installrubyonrails-mac.html ), vous rencontrerez probablement ce problème à la date de publication.
Ce correctif fonctionne et est vérifié par
Utilisez random_key
pour qu'il soit toujours adapté.
key = cipher.random_key
cipher.key = key
reference http://Ruby-doc.org/stdlib-2.0.0/libdoc/openssl/rdoc/OpenSSL/Cipher.html
Avait la même erreur: Lancer la mise à jour de paquet devrait faire l'affaire
J'avais aussi ce problème et je l'ai résolu en exécutant
bundle update
Assurez-vous d'avoir la dernière version de Rails installée.