Railsでlibディレクトリをautoload対象に含める方法

こんにちは!kossyです!




さて、今回は、各種ライブラリやRakeタスクファイルを配置する用途でよく用いられる、
libディレクトリ内のファイルをautoload対象に含める方法について、
ブログに残してみたいと思います。




環境
Ruby 2.5.1
Rails 5.2.3
MacOS Mojave

そもそもautoloadってなに?



命名規則に則ったファイルを自動でrequireしてくれる機能」のことです。

クラス名をキャメルケース(userItemのように2語目の先頭が大文字)で記述したり、
ファイル名をスネークケース(user_itemsのように単語と単語をアンダーバーで繋ぐ)で記述する等の規則に
準じて命名されたファイルをautoでrequireしてくれるというわけです。

デフォルトでautoload_pathsに含まれているのは、

  • app/controllers
  • app/models
  • app/helpers
  • app/mailers
  • app/controllers/concerns
  • app/models/concerns

の6ディレクトリです。


デフォルトではlibディレクトリはautoload_pathsに含まれていないので、
config/application.rb内で明示的にlibディレクトリをautoload_pathsに含むように
記述する必要があります。

以下実装です。

# 省略

  class Application < Rails::Application

# 省略

    config.autoload_paths += %W(#{config.root}/lib)

  end

これでrailsアプリの立ち上げ時にlibディレクトリがautoload_pathsに含まれるようになります。