yhara.jp

Recent Posts
Edit

Rubyの黒魔術

Tech

Rubyの黒魔術といえば?

eval

文字列として与えられたRubyプログラムを実行できる。instance_eval, class_eval, module_evalというバリエーションがある。

method_missing

NoMethodErrorをフックできる。存在しないメソッドが生えてるように見せられる。DSL実装に使われる。

使う時はrespond_to?も併せて定義すべき。というか大抵はdefine_methodで足りる。

instance_variable_set

オブジェクトの外側から勝手にインスタンス変数を注入するメソッド。JavaScriptのオブジェクトみたいに好きなプロパティを生やすことができる。

TracePoint

Rubyの一挙手一投足をフックできる。昔はset_trace_funcというのが同じ役目だった。

callcc

時空を巻き戻す最終魔法。強力すぎるのでrequireしないと使えないよう封印された。特にC拡張が時空の歪みに巻き込まれて死んだりするらしい

finalizer

オブジェクトが消える瞬間を観測できる。筆者は使ったことがない。


More posts