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

时间:2011-04-13 19:28:43

标签: ruby-on-rails ruby ruby-on-rails-3

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

的方法
class String
  def capitalize_first
    # ...
  end
end

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

3 个答案:

答案 0 :(得分:125)

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

创建并initializer加载自定义扩展程序(例如: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

答案 1 :(得分:62)

您可以在config / initializers / string.rb

中执行此操作
class String
  def capitalize_first
    # ...
  end
end

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

答案 2 :(得分:5)

Rails 3.1中的指南是要走的路:

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

如果您遵循默认约定,则无需使用初始化程序配置。