こんにちは!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