在 Ruby 中有效地浏览源代码

Navigating through source code efficiently in Ruby

我试图找到调用 Item.where(dst: "video") 时调用的方法(项目是 Mongoid 模型)。在源代码中查找,我看到 criteria.rb 是要去的地方。但是,def where 会调用 super。然后Origin::Selectable(包含在Origin::Queryable里面)定义它:

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

现在,我必须看看 js_queryexpr_query 在哪里,看看它们做什么等等。

浏览所有这些源代码和模块、找到所有方法然后试图弄清楚它是如何工作的变得很困难。

是否有更好的方法来执行此过程以了解其工作原理?

如果你知道接收者的class(比如A)和方法名(比如foo),那么你可以这样做:

A.instance_method(:foo).source_location

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

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

您可能需要改进您的编辑器体验。共有三种非凡的能力(除了 Eclipse/Aptana, NetBeans 等许多其他能力):

根据您的选择,您可以使用 Ctrl+Click 或您喜欢的键盘快捷键快速浏览代码.

这里这个问题也被问了很多次:https://whosebug.com/search?q=best+ruby+editor

希望对您有所帮助。