我正在尝试重新打开rails中的String
类,并为我的应用添加更多方法。编写代码不是问题 - 我的问题是代码应该去哪里。
在不同的模型文件中重新打开一个类是没有意义的,因为它实际上与任何模型没有任何关系。我想也许在config
或lib
的某个地方会有意义,但我还不是特别熟悉RoR。
总结一下,定义类修改代码的最合理位置在哪里,是否有任何影响,具体取决于代码加载的位置/时间?
答案 0 :(得分:20)
最合乎逻辑的地方可能是config/initializers
目录中的文件。您在此处输入的任何*.rb
文件将在rails启动时自动执行。如果需要,可以将它们放在子文件夹中,这样就可以执行config/initializers/extensions/*.rb
。
答案 1 :(得分:7)
我尝试将这些猴子补丁保持在最低限度,只有当它们非常符合我的代码的最佳利益时。
最近我更喜欢将文件保存在lib / monkey / string.rb,lib / monkey / hash.rb等文件夹中。然后我需要环境中lib / monkey文件夹中的所有文件.rb文件。
# Load all monkey-patches.
Dir["lib/monkey/*.rb"].each {|monkeyfile| require monkeyfile}
如果出现问题,这会将我的所有类修改代码隔离到一个位置。我也喜欢有点愚蠢的命名,因为它使它成为值得注意的东西。有人可能有更好的系统,如果是这样的话......我很想听听它!