有没有办法在rails中以编程方式查看(或打印)方法定义?

Cos*_*siu 6 ruby ruby-on-rails ruby-on-rails-3

假设我bla在rails应用程序中有一个名为define 的函数.

有没有办法在ruby或rails中通过它我可以动态地/编程地打印代码来定义该函数?例如:

def bla
   puts "Hi There"
end
Run Code Online (Sandbox Code Playgroud)

然后,如果我调用一个函数,例如get_definition:

puts get_definition(:bla)
Run Code Online (Sandbox Code Playgroud)

这会打印出来

"puts \"Hi There\""
Run Code Online (Sandbox Code Playgroud)

这样做有规范的方法吗?我之前并没有真正需要这样做,而且我知道这在rails中并不常见.

我也不想使用元(反射)编程来定义我的方法,然后存储用于定义我的方法的字符串.任何帮助表示赞赏!

saw*_*awa 1

我不知道约翰·海兰在写什么。没有这样的方法(在普通的 Ruby 中)Method#source。实用的解决方案是使用撬宝石。它有方法让您访问源代码。

  • 噢,伙计,你是完全正确的。我实际上是在 pry 中测试这一点,它将 `.source` 方法添加到 Method 类中。哎哟!我将删除我的答案,对于错误信息表示歉意。 (3认同)