【问题标题】:Is there a way to view (or print) a method definition programatically in rails?有没有办法在 Rails 中以编程方式查看(或打印)方法定义?
【发布时间】:2013-06-25 00:23:06
【问题描述】:

假设我在我的 rails 应用程序的某处定义了一个名为 bla 的函数。

在 ruby​​ 或 rails 中是否有一种方法可以动态/以编程方式打印用于定义该函数的代码?比如:

def bla
   puts "Hi There"
end

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

puts get_definition(:bla)

这会打印出来

"puts \"Hi There\""

有这样做的规范方法吗?我以前实际上不需要这样做,而且我知道这在 Rails 中并不是很常见的做法。

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

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3


【解决方案1】:

我不知道 John Hyland 在写什么。没有像Method#source 这样的方法(在普通的Ruby 中)。实际的解决方案是使用pry gem。它具有让您访问源代码的方法。

【讨论】:

  • 不确定谁对你投了反对票,但我也会尝试使用 pry gem。 @John-Hyland 实际上有一个好点, .source_location 方法确实适用于 1.9.2。我还没有在 1.9.3 中测试 .source 方法
  • @CosminAtanasiu 是的,Method#source_location 已经存在了很长时间。正如我所写,没有像Method#source 这样的方法。 1.9.2和1.9.3我都用过,没有这种方法。现在我用的是2.0,没有这个方法。
  • 这几天我再去复习看看
  • 哦,伙计,你完全正确。我实际上是在 pry 中测试这个,它将 .source 方法添加到 Method 类中。嗬!我将删除我的答案,对于错误信息,我深表歉意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-02
  • 2021-08-28
  • 1970-01-01
相关资源
最近更新 更多