在Ruby on Rails中,要扩展String类,代码应该放在哪里?

如果在Ruby on Rails上,我需要添加一个名为

class String def capitalize_first # ... end end 

并想知道文件应该到哪里去? (哪个目录和文件名,是任何初始化代码需要?)这是一个Rails 3.0.6项目。

我总是在我的lib目录中添加一个core_ext目录。

用于加载自定义扩展的创build和初始化程序(例如: config/initializers/core_exts.rb )。 并在其中添加以下行:

 Dir[File.join(Rails.root, "lib", "core_ext", "*.rb")].each {|l| require l } 

并有像你这样的扩展:

lib/core_ext/string.rb

 class String def capitalize_first # ... end end 

你可以在config / initializers / string.rb中完成

 class String def capitalize_first # ... end end 

应该是所有你需要的(除了应用程序重新启动)。

Rails 3.1中的准则是要走的路:

http://guides.rubyonrails.org/plugins.html#extending-core-classes

如果遵循默认约定,则不需要混淆初始化器configuration。