こちらの記事にもある通り、
自作のユーティリティクラスをlib/utils/hoge_util.rb
に
lang
1class HogeUtil 2end
と作成し、config/application.rb
にて
lang
1# Rails 4の場合 2# config.autoload_paths += %W(#{Rails.root}/lib) 3# Rails 5の場合はこちらの書き方がよさそう 4config.paths.add 'lib', eager_load: true
ということはよくやると思います。
しかしlib
の中にユーティリティクラスを置いてautoloadパスに加えるのは本当に正しいのでしょうか?個人的にはapp/utils
ディレクトリを切ってそこに置いた方がいいのではないかと思いっています。理由は
- デフォルトで
lib
の中にはassets
やtasks
があるassets
やtasks
はautoloadパスに加えたくないはず- サーバ(
rails s
)を動かすために必要なRubyコードは全部app
の中にあった方がgrepしやすいし、どちらに入れるか迷わずに済む lib
に置くと先述の記事のように、Railsをアップグレードしたときハマる可能性がある
そもそもlib
の下には何を置くべきのでしょうか?
Railsガイドによると
lib/ アプリケーションで使用する拡張モジュールが置かれます。
とありますが、ちょっとよく分かりません。別のサイトでは「他のアプリケーションでも使いまわせるコードを置く」と説明しているところもありますが、assets
やtasks
はアプリケーション固有である方が普通だと思います。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/17 00:52