Module.current
提案中の機能( http://redmine.ruby-lang.org/issues/show/4043 )
class ModuleCurrentTestModule1 CURRENT = Module.current def self.foo Module.current end def foo Module.current end end def test_module_current assert_equal(TestModule, Module.current) assert_equal(ModuleCurrentTestModule1, ModuleCurrentTestModule1::CURRENT) assert_equal(ModuleCurrentTestModule1, ModuleCurrentTestModule1.foo) module_current_test = ModuleCurrentTestModule1.new assert_equal(ModuleCurrentTestModule1, module_current_test.foo) foo = ModuleCurrentTestModule1.module_eval{Module.current} assert_equal(ModuleCurrentTestModule1, foo) foo = ModuleCurrentTestModule1.instance_eval{Module.current} assert_equal("#<Class:TestModule::ModuleCurrentTestModule1>", foo.to_s) foo = module_current_test.instance_eval{Module.current} assert_equal(module_current_test.singleton_class, foo) end
テストはこんなもんでいいだろうか