在RoR中重新开课的地方

我正在尝试在rails中重新打开String类,并为我的应用程序添加更多方法。 编写代码不是问题 – 我的问题是关于代码应该去哪里。

我在一个不同的模型文件中重新打开一个类是没有意义的,因为它实际上与任何模型没有任何关系。 我想也许在configlib某个地方有意义,但我还不是特别熟悉RoR。

总而言之,定义类修改代码的最合理位置在哪里,是否有任何影响取决于代码加载的位置/时间?

最合乎逻辑的地方可能是在config/initializers目录中的一个文件中。 您在此处放置的任何*.rb文件将在rails启动时自动执行。 如果你愿意,你可以将它们放在子文件夹中,这样你就可以做一些像config/initializers/extensions/*.rb

我尝试将这些猴子补丁保持在最低限度,只有当它们非常符合我的代码的最佳利益时。

最近我更喜欢将文件保存在lib / monkey / string.rb,lib / monkey / hash.rb等文件夹中。然后我需要在environment.rb文件中的lib / monkey文件夹中的所有文件。

 # Load all monkey-patches. Dir["lib/monkey/*.rb"].each {|monkeyfile| require monkeyfile} 

如果出现问题,这会将我的所有类修改代码保持隔离到一个位置。 我也喜欢有点愚蠢的命名,因为它使它成为值得注意的东西。 有人可能有更好的系统,如果是这样的话…我很想听听它!