“reloadable_patch”到底是什么?

嘿,

我还在尝试拆解插件,在学习过程中试图覆盖 TopicsController,于是搜索了 Discourse 代码仓库,注意到了 reloadable_patch

随后,我在 Discourse 中搜索 reloadable_patch,找到了 12 处代码匹配:

因此,我决定扩大搜索范围,以更好地理解这个迷人的“方法/钩子(?)”,于是我:

  • 搜索了整个 GitHub:
    – 所有结果似乎都与 Discourse(插件)相关

  • 搜索了网络:
    – 所有结果似乎都与 Discourse(插件)相关

  • 搜索了 Meta 论坛:
    – 找到了一些结果,但没有详细解释 reloadable_patch(内部机制)的内容。

接下来,我再次搜索了 Discourse 仓库,但未能找到(可能是因为我还不够熟练) reloadable_patch 的确切“定义”,即它具体做了什么(或如何定义)。

对于像我这样的 Ruby 新手来说,它似乎是一个“方法”(暂且这么说),或者是一个用于覆盖 Discourse 类的“钩子”;但我找不到定义其内部工作原理的 Ruby 代码。

是否有人愿意向我解释一下,或者指出能说明 reloadable_patch 从 Ruby 内部机制角度如何工作的“定义代码”?

谢谢!

希望我不是在自找麻烦才问这个问题!! :slight_smile:

它在这里定义。希望这对进一步排查有帮助。

非常感谢 @fzngagan

不确定为什么用那个 def 关键字在仓库中搜索时没有显示该方法;但这正是我要找的东西!

再次感谢!!

编辑:我明白是怎么回事了。我没有深入查看那个 instance.rb 文件,只停留在文件顶部;但文件中其实有 23 个 reloadable_patch 条目,而 def 定义在文件底部。

用引号搜索 “def reloadable_patch” 找到了它(就在刚才):)

我开始对 Ruby 上瘾了,正在探索每一个角落。

@markvanlan 解释得很清楚