访问方法内容而不在Ruby中执行它

Sev*_*rin 1 ruby ruby-on-rails ruby-on-rails-4

这个问题一直让我忙碌了一段时间,所以我希望有人知道如何解决这个问题.

让我们看一个简单Classmethod(没有初始化方法简化):

class MyClass
  def my_method
    page.search('//p')
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,有没有办法检索my_method不执行它的内容?我希望得到它将在执行时运行的代码:

"page.search('//p')"
Run Code Online (Sandbox Code Playgroud)

有没有办法在Ruby中做到这一点?

Mar*_*pka 6

pry如果my_method源保存在某个文件中,则可以使用gem .向类pry添加source方法Method:

require 'pry'
method = MyClass.instance_method(:my_method)
method.source
# => "  def my_method\n    page.search('//p')\n  end"
Run Code Online (Sandbox Code Playgroud)