Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过反射调用ruby模块方法?_Ruby_Reflection_Ruby 1.8 - Fatal编程技术网

如何通过反射调用ruby模块方法?

如何通过反射调用ruby模块方法?,ruby,reflection,ruby-1.8,Ruby,Reflection,Ruby 1.8,我想让下面的工作。我的想法是,我可以向路由添加方法,如果它们存在,我可以稍后使用它们。我使用的是Ruby 1.8 module Routes def home #stuff end def work #end end end Routes.method_defined? :home # true Routes.send(:home) #NoMethodError: undefined method `home' for Routes:Module 使用以下

我想让下面的工作。我的想法是,我可以向路由添加方法,如果它们存在,我可以稍后使用它们。我使用的是Ruby 1.8

module Routes
  def home
    #stuff
  end

  def work
    #end
  end
end

Routes.method_defined? :home
# true

Routes.send(:home)
#NoMethodError: undefined method `home' for Routes:Module

使用以下代码,您可以执行此操作:

Class.new.extend(Routes).send(:home)

我很确定我遗漏了一些关于这些不是类方法而是模块类的实例方法的信息?我只是感到困惑。可能的复制我其实不想这样做,但阅读文档是唯一的方法,除非我将它们转换为模块方法。我的方法是实例方法。我还有一个问题,如何判断是否定义了模块方法?您以前在OP中已经检查过了,是吗?:)直到我读了你贴的问题,我才理解这些文档回答我自己的后续问题。
路线。回复?
会很好。