問題

  • gemを作るときクラスを分けていますが、それらを使う場合、必ずrequireしないいけない。Railsのようなautoloadまたは一括でrequireする方法はないの?

調査

横展開

  • requireload
    • requireは二重読み込まない
    • loadは、必ず読み込む
    • よって、設定ファイルを際読み込む場合はloadを使う
  • ActiveSupport::Autoload
    • 命名規約に従えばファイル名を省略できることで拡張したもの
    • autoload :Hoge, 'hoge' -> autoload :Hoge

まとめ

  • autoloadは、Rubyのメソッドであり、autoload :Hoge, 'lib/hoge'のように書くと、必要なタイミングでロードしてくれるだけ
    • requireautoloadは、今回のケースに対しては同じ、つまり、使っているクラスであればどっちでも書かないといけない
  • Raislの場合、クラスがない場合自動で探してくれるのは、const_messingメソッドを上書きして、命名規約に従って探すに行くだけ
  • gemの場合は、やはりrequireしないといけない

参考リンク