Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > library _builtin > class Module > class_exec (private)
module_exec(*args) {|*vars| ... } -> object
class_exec(*args) {|*vars| ... } -> object
与えられたブロックを指定された args を引数としてモジュールのコンテキストで評価します。
モジュールのコンテキストで評価するとは、実行中そのモジュールが self になるということです。 つまり、そのモジュールの定義式の中にあるかのように実行されます。
ただし、ローカル変数だけは外側のスコープと共有します。 定数とクラス変数のスコープは、自身のモジュール定義式内と同じスコープになります。
class Thing end c = 1 Thing.class_exec{ def hello() "Hello there!" end define_method(:foo) do # ローカル変数がブロックの外側を参照している c end } t = Thing.new p t.hello() #=> "Hello there!" p t.foo() #=> 1
[SEE_ALSO] Module#module_eval, Module#class_eval