这个ruby语句是什么意思



所以我在学习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中搜索(。

最新更新