はじめに
Railsでlibフォルダ配下に新しく作成したクラスが読み込まれなくて少しハマったので雑にメモしておく。
事前に確認したこと
- lib配下はautoload_pathsの対象になっている(autoload_pathsとは)
- 同じ階層にある他のクラスは問題なく参照できている
結論
クラス名に数字を含む場合は単語の後ろのみ許容される。
具体例
ファイル名:abc_de9_fgh.rb
クラス名:AbcDe9Fgh
→クラスを参照できる
ファイル名:abc_de_9_fgh.rb
クラス名:AbcDe9Fgh
→NameError: uninitialized constant AbcDe9Fgh
ファイル名:abc_de_9fgh.rb
クラス名:AbcDe9fgh
→NameError: uninitialized constant AbcDe9fgh
おわりに
具体例の2つ目と3つ目のパターンだったり、ファイル名とクラス名がマッチしていなくてもrequire Rails.root.join("filepath")
で読み込ませることはできるけど、Railsは自動読み込みが基本だからなんでrequireしてるんだ?ってなりそう。