2022/01/14 今回の気になった bugs.ruby のチケット
今週はレシーバに定義されている定数名とその値の Hash
を返すメソッドの提案がありました。
[Bug #18475] Yielding an element for Enumerator in another thread dumps core
- 以下のコードを実行すると segv するというバグ報告
def run Thread.new do 1.times do |value| yield "some-value" end end.join end to_enum(:run).first
#18474
を調べている時に見つけたバグらしい
[Feature #18478] Module#constant_pairs
- 定数名と定数の値の両方を返す
Module#constant_pairs
メソッドを追加する提案
module A B = 1 class C end end A.constant_pairs # => { B: 1, C: A::C }
- 現状だと以下のようなコードを書く必要がある
module A B = 1 class C end end p A.constants.to_h { |c| [ c, A.const_get(c)] } # => {:C=>A::C, :B=>1}
- Rails のコード(テスト) とかでこういうコードが使われているらしい
[Feature #10829] Add to_proc method to the Array class
- 以下のような
Array#to_proc
を追加する提案- 7年前のチケット
class Array def to_proc proc { |receiver| receiver.send *self } end end # 1.send(:+, 3) のような呼び出しを行う p [1, 2, 3, 4, 5].map(&[:+, 3]) # => [4, 5, 6, 7, 8]
- 最近チケットが更新されていたんですがどこかで話題になってたんですかね?