タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

Rubyとregressionに関するrochefortのブックマーク (2)

  • Ruby 2.1.1 に含まれる Hash#reject の不具合について

    Posted by sorah on 10 Mar 2014 Translated by sorah Ruby 2.1.0 まで、Hash を継承したクラスの reject メソッドはその継承したクラスのオブジェクトを返す挙動になっていました。 しかし、Ruby 2.1.1 で意図せずその挙動が変更され、継承したクラスの場合でも必ず Hash クラスのオブジェクトが返る挙動に変更されてしまっています。 class SubHash < Hash end p Hash.new.reject { }.class #=> 2.1.0: Hash, 2.1.1: Hash p SubHash.new.reject { }.class #=> 2.1.0: SubHash, 2.1.1: Hash (正確にはインスタンス変数など他の属性もコピーされなくなっています。) Ruby 2.1.0 からバージ

    rochefort
    rochefort 2014/03/14
    hash#reject // railsにも影響が出てるのか
  • Ruby 2.1.1 で Hash#reject のデグレ

    Ruby 2.1.0 まで、Hash を継承したクラスの reject メソッドの挙動は継承クラスのオブジェクトを返す挙動をしてました。 しかし、 Ruby 2.1.1 で意図せずその挙動が変更され、必ず Hash クラスのオブジェクトが返されるようになりました。 class SubHash < Hash; end p SubHash.new.reject{}.class #=> 2.1.0: SubHash 2.1.1: Hash p Hash.new.reject{}.class #=> 2.1.0: Hash 2.1.1: Hash (厳密には ivar 等その他の属性もコピーされなくなっています。 また、Ruby 2.1 からはバージョニングポリシーの変更により、2.0.0 までのパッチリリースにあたるリリース時で TEENY が増えます。詳細は今月の WEB+DB で!) この挙

    rochefort
    rochefort 2014/03/14
    hash#reject
  • 1