更新: Rails 4 の新しいデフォルトとして、 Concerns の使用が確認されました。
モジュール自体の性質に大きく依存します。私は通常、コントローラー/モデル拡張機能をアプリ内の /concerns フォルダーに配置します。
# concerns/authentication.rb
module Authentication
...
end
# controllers/application_controller.rb
class ApplicationController
include Authentication
end
# concerns/configurable.rb
module Configurable
...
end
class Model
include Indexable
end
# controllers/foo_controller.rb
class FooController < ApplicationController
include Indexable
end
# controllers/bar_controller.rb
class BarController < ApplicationController
include Indexable
end
/lib は、汎用ライブラリとして私が好む選択肢です。私は常に、すべてのアプリケーション固有のライブラリを配置する lib にプロジェクトの名前空間を持っています。
/lib/myapp.rb
module MyApp
VERSION = ...
end
/lib/myapp/CacheKey.rb
/lib/myapp/somecustomlib.rb
Ruby/Rails のコア拡張は通常、構成初期化子で行われるため、ライブラリは Rails ブーストラップで一度だけロードされます。
/config/initializer/config.rb
/config/initializer/core_ext/string.rb
/config/initializer/core_ext/array.rb
再利用可能なコード フラグメントの場合、他のプロジェクトで再利用できるように (マイクロ) プラグインを作成することがよくあります。
ヘルパー ファイルは通常、ヘルパー メソッドを保持し、オブジェクトがヘルパー (フォーム ビルダーなど) によって使用されることを意図している場合はクラスを保持することもあります。
これは本当に一般的な概要です。よりカスタマイズされた提案が必要な場合は、具体的な例について詳細を提供してください。:)