web-dev-qa-db-ja.com

In Ruby on Rails、Stringクラスを拡張するには、どこにコードを配置すればよいですか?

On Ruby on Railsの場合、次のメソッドを追加する必要があります。

class String
  def capitalize_first
    # ...
  end
end

そして、ファイルはどこに行くべきだろうか? (どのディレクトリとファイル名、および初期化コードが必要ですか?)これはRails 3.0.6プロジェクト用です。

74

libディレクトリにcore_extディレクトリを常に追加します。

カスタム拡張をロードするために 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
129
Mike Lewis

あなたはconfig/initializers/string.rbでそれを行うことができます

class String
  def capitalize_first
    # ...
  end
end

(アプリの再起動以外に)必要なものすべてにする必要があります。

64
njorden

Rails 3.1のガイドラインが進むべき道です:

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

デフォルトの規則に従えば、初期化設定をいじる必要はありません。

5
Hopstream