[日記] 第18回 Ruby/Rails 勉強会

昨日は、名前が Ruby/Rails 勉強会にかわった勉強会に参加してきました。

今回は勉強会そのものよりも、それ以外のことが印象に残りました。

中田さんと yhara さんが我が家に泊まったので、そのときした内容がとても面白かったです。

主に Binding.of_caller (http://api.rubyonrails.com/classes/Binding.html) メソッドがなぜ実行できなくなったか、という点について聞いたりしていました。

そもそも caller の Binding オブジェクトを取得できるということが、set_trace_func のバグだったということで、少し納得しました。

中田さんの話では、Binding.each メソッドを定義して、現在のスタックフレームから順に Binding オブジェクトを取得できるようにするアイデアを以前から持っていたようです。

しかしながら、そうするためにはすべてのスコープに入るたびに、Binding オブジェクトを内部的に生成するような処理にせざるをえないので、副作用として実行時間が遅くなるというような問題点があるということでした。

set_trace_func のバグがあるときは、要求がある時点で Binding オブジェクトを生成するようなのに残念です。このあたりの問題の解決するには C 実装をどうするかという問題もありますが、1.8 ではきれいな解決方法はなさそうというのが中田さんの見解でした。

1.9 では見込みがありそうなようなことを言っていたので、期待したいところです。