🔥

[Bug #21272] Class.new でクラスを定義した場合に TracePoint が呼ばれないというバグ報告

に公開

[Bug #21272] Class.new doesn't trigger :class TracePoint

  • TracePoint では class の定義に対して処理をフックすることができる
TracePoint.trace(:class) do |tp|
  puts "Class created at line: #{tp.lineno}"
end

class Foo; end
__END__
output:
Class created at line: 5
  • しかし、次のように Class.new でクラスを定義した場合には TracePoint が呼ばれないというバグ報告
TracePoint.trace(:class) do |tp|
  puts "Class created at line: #{tp.lineno}"
end

Baz = Class.new
__END__
output:
なし
  • これに対して Class.new の場合もサポートするか、もしくはドキュメントで動作を明確にするか、みたいなチケット
  • 個人的には Baz = Class.new は『 class を定義しているわけではない』と思うので TracePoint でトリガーされるのはやや微妙ですかねえ
GitHubで編集を提案

Discussion