在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。