module内のproc
[ruby-list:41831]よりmodule内のProcオブジェクトのコンテキストに関して。
module Module1 def func1 # 何らかの処理 end Func = proc { func1 } def func2 Func end end class Class1 include Module1 end obj = Class1.new obj.func1 #=> 動作する obj.func2.call #=> NameError: undefined local variable or method `func1' for Module1:Module
obj#func2でFuncのcallが呼び出されたとき、Procオブジェクトが実行されるコンテキストはModule1であるので、Module1#func1は直接呼び出すことが出来ないようです。
Procオブジェクトを生成するメソッドをModuleの中で定義してやれば良さそうです。(何回もProcオブジェクトを作っているのは効率が悪いですが。
module Module1 def func1 end def make_proc proc { func1 } end def func2 make_proc end end