43
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsでのモジュールのオートロード

Last updated at Posted at 2013-09-15

Railsでのモジュールの使い方のメモです。
Railsプロジェクト内の/config/application.rbファイル内にモジュール設置パス以下のファイルを自動でロードする指定をし、クラス内で "include モジュール名" と指定することで該当モジュールを読み込めるようになります。
モジュールはRailsプロジェクト内の/lib以下に設置します。
コントローラ、ヘルパー、モデルで共通で使われる機能はモジュールにまとめて必要に応じて呼び出します。

動作確認環境

※2013/9/15 追記

コメント欄で御指摘いただきました。
Rails 4.0.0でもこのやり方で動きましたが、Rails4からapp/controllers/concerns, app/model/concernsというディレクトリが追加され、これらのディレクトリにモジュールを設置する形になったようです。

  • ActiveSupport::Concern
    Rails3までは以下のやり方で設定することになると思います。Rails 3.2.13では動作確認できました。

サンプルコード

自動ロード対象となるパスの指定(Rails3からautoload_pathsの設定はデフォルトでは無効)
/config/application.rb

module TestApp
  class Application < Rails::Application
  
    ### モジュール自動ロードPathの指定を追記
    config.autoload_paths += %W(#{config.root}/lib)
  
  end
end
モジュール定義
/lib/testmodule.rb
module Hoge
  def test_module_method
    処理内容
  end
end
モジュールの読み込み(以下はコントローラクラスの例)
/app/controllers/test_controller.rb
class TestController < ApplicationController
  ### モジュールの読み込み(インクルード)
  include Hoge
  
  def index
  
    ### indexメソッド内でHogeモジュールの「test_module_method」メソッドを実行
    test_module_method
  
  end
  
end

参考

43
40
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
43
40

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?