Rails4のController,Modelが呼び出すモジュールのロードに関するメモです。
Rails3まではプロジェクト内のlibディレクトリ内等にモジュールを設置し、config/application.rbファイル内にそのモジュール設置先PATH以下のファイルを自動でロードする設定をしていました。
Rails4からは、app/controllers, app/modelディレクトリにconcernsというディレクトリが存在します。コントローラやモデルで利用するモジュールはここに設置するようになったようです。これらのディレクトリは自動で読み込まれるようです。但し、絶対にconcernsディレクトリを使用する必要はないようで、従来通りのやり方でもいけました。
動作確認環境
- Rails (Ver 4.0.0)
- Rails 4.0: Final version released!
サンプルコード
モジュール定義
app/controllers/concerns/hogemodule.rb
module Hoge
def hoge_module_method
処理内容
end
end
モジュールの読み込み(以下はコントローラクラスの例)
/app/controllers/test_controller.rb
class TestController < ApplicationController
### モジュールの読み込み
require 'hogemodule'
include Hoge
…
def index
…
### indexメソッド内でHogeモジュールの「hoge_module_method」メソッドを呼び出す
hoge_module_method
…
end
…
end
参考
Rails4でのController,Modleのモジュールの使い方