在Ruby中有效地浏览源代码

时间:2015-02-09 15:08:22

标签: ruby-on-rails ruby debugging

我试图找到调用Item.where(dst: "video")时调用的方法(Item是Mongoid模型)。查看源代码,我看到criteria.rb是可以去的地方。但是,def where称为超级。然后Origin::Selectable(包含在Origin::Queryable内)定义它:

def where(criterion = nil)
   criterion.is_a?(String) ? js_query(criterion) : expr_query(criterion)
end

现在,我必须看看js_queryexpr_query的位置,看看他们做了什么等等。

通过所有这些源代码和模块,找到所有方法,然后试图弄清楚它是如何工作的。

有没有更好的方法来完成这个过程以找出工作原理?

2 个答案:

答案 0 :(得分:2)

您可能需要改善编辑器体验。有三种非凡的能力(除了Eclipse/AptanaNetBeans等许多其他能力之外):

根据您的选择,您可以使用 Ctrl + 单击或使用首选键盘快捷键快速浏览代码。

这里也提到了这个问题的次数:https://stackoverflow.com/search?q=best+ruby+editor

希望它有所帮助。

答案 1 :(得分:1)

如果您知道接收者的类别(比如说A)和方法名称(比如foo),那么您可以这样做:

A.instance_method(:foo).source_location

在大多数情况下,这将给出文件名和行号。如果返回nil,则它可能是C定义的方法,不依赖于其他Ruby方法。

另一种方法是使用pry gem或method_source gem。