这个Ruby语句是什么意思[closed]

wecizke3  于 2022-11-04  发布在  Ruby
关注(0)|答案(1)|浏览(176)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

2天前关闭。
Improve this question
所以我在学习ruby和练习逆向工程ruby应用程序时,我发现了这行代码:

include ::Pro::License

我需要知道它包括什么,因为我正在查找任何文件或文件夹名称Pro或License
如果是class,我想查看class

deyfvvtc

deyfvvtc1#

尽管存在一些文件根据其定义的类/模块命名的约定(特别是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)是您唯一的朋友(只是为了确保您不仅搜索项目文件夹,还搜索gem)。

相关问题