已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
2天前关闭。
Improve this question
所以我在学习ruby和练习逆向工程ruby应用程序时,我发现了这行代码:
include ::Pro::License
我需要知道它包括什么,因为我正在查找任何文件或文件夹名称Pro或License
如果是class
,我想查看class
已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。
2天前关闭。
Improve this question
所以我在学习ruby和练习逆向工程ruby应用程序时,我发现了这行代码:
include ::Pro::License
我需要知道它包括什么,因为我正在查找任何文件或文件夹名称Pro或License
如果是class
,我想查看class
1条答案
按热度按时间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)。