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

时间:2014-11-20 13:40:23

标签: ruby-on-rails ruby ruby-on-rails-4

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

让我们看一个简单的Class method(简化而不使用初始化方法):

class MyClass
  def my_method
    page.search('//p')
  end
end

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

"page.search('//p')"

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

1 个答案:

答案 0 :(得分:6)

可以使用pry gem,提供my_method来源保存在某个文件中。 prysource方法添加到Method类:

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