名前空間の重複
railsはクラス名を自動解決してくれたりするので、場合によってはうまく解決出来ないケースがある
エラーになったケース
app/controllers/hoge/piyo_controller.rb
tmp = Hoge::Foo.new
app/services/hoge/foo.rb
module Hoge
class Foo
〜略〜
end
end
この場合、controller側で
uninitialized constant Hoge::Foo
となる。
理由はFooクラス
をapp/controllers/hoge
から探してしまうためである。
解決方法
app/controllers/hoge/piyo_controller.rb
tmp = ::Hoge::Foo.new
このように先頭に::
をつけてあげると、親の方から探してくれる。