在RoR重新开课的地方

Jer*_*iko 9 ruby ruby-on-rails

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

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

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

rye*_*guy 20

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


Ale*_*lex 7

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

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

# Load all monkey-patches.
Dir["lib/monkey/*.rb"].each {|monkeyfile| require monkeyfile}
Run Code Online (Sandbox Code Playgroud)

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

  • 为什么不使用initializers目录?它做你在这里做的事情. (2认同)
  • 我认为/ lib是个地方,/初始化器通常只是一些配置设置. (2认同)