Posté par sorah le 2014-03-10
Traduit par Geoffrey Roguelon
Dans les versions de Ruby 2.1.0 et inférieures, la méthode reject
des classes
héritées de Hash
retourne un objet de cette sous-classe. Mais en Ruby 2.1.1,
ce comportement a accidentellement changé pour retourner constamment un objet de
la classe Hash
.
(Pour être exact, les autres états comme les variables d’instance et autres ne sont pas copiés non plus.)
Ruby 2.1.1 n’aurait pas dû inclure ce changement de comportement car depuis la sortie de Ruby 2.1.0, nous avons changé la politique de versionnage, par conséquent, Ruby 2.1.1 est une version patch et ne doit contenir ce type de changement de comportement.
Cette régression peut affecter potentiellement plusieurs bibliothèques, parmi
lesquels HashWithIndifferentAccess
ou encore OrderedHash
de Rails.
Exemple de
ticket Rails.
Ruby 2.1.2 rétablira le comportement Ruby 2.1.0 de la méthode Hash#reject
.
En revanche ce “défaut” deviendra le comportement par défaut de Ruby 2.2.0 :
fonctionnalité #9223.
Par conséquent, nous recommandons de corriger votre code en perspective de
ce nouveau comportement.
Cet incident a été causé par un commit manquant. Pour plus de détails, consultez : http://blog.sorah.jp/2014/03/10/hash-reject-regression-in-ruby211.
Désolé pour la gêné occasionnée et merci pour votre soutien.