所以我在学习ruby并练习一个ruby应用程序的逆向工程,我发现了这一行:
include ::Pro::License
我需要知道它包括什么,因为我正在查找任何文件或文件夹名称Pro或License
如果是class
,我想查看class
尽管存在一些以文件定义的类/模块命名的约定(尤其是在Rails中,自动加载魔术的常量依赖于这些约定(,但Ruby本身作为一种语言并没有以任何方式强制执行这一点。因此,可以在path/to/foo
文件中定义类Bar
,明确要求后者,然后包括Bar
——无论好坏,一切都会正常工作。
您包含的模块可能是在一些gem中定义的,并且某些(大多数?(IDE默认情况下不搜索gem源代码。
那么,该怎么办呢?如果你使用的是一个相对新鲜的Ruby(2.7+(,有一个方法Module#const_source_location
可以帮助你定位特定常量的来源(在控制台中尝试self.class.const_source_location("::Pro::License")
(。这可能是最短的路。
如果您的Ruby版本较旧,请尝试pry
(如果是Rails,则为pry-rails
(代码浏览功能。在应用程序中的某个位置放置断点(binding.pry
(,然后是cd ::Pro::License
,然后是show-source
(短划线,而不是下划线!(。它应该打印模块的源代码以及定义它的文件的完整路径。
无论出于何种原因,如果以上方法都不适用于您,那么您的IDE高级搜索(或grep
(是您唯一的朋友(只需确保您不仅在项目文件夹中搜索,而且在gems中搜索(。