Expected /home/xxxx/project/app/foo/bar.rb to define Barみたいなエラーが出た
そうさ…意味なんかない。"上"のヤツらは裕福な生活を送りながら、くだらない思想をぶつけあって、戦闘に明け暮れている。俺達は、そのしわ寄せでこんな生活を……強いられているんだッ!(集中線)
強いられているんだ!とは (シイラレテイルンダとは) [単語記事] - ニコニコ大百科
上の引用に特に意味はありません
Ruby on Railsの「規約」を破るとこのエラーが出るようです。おそらく「app/directory/foo/bar.rbってファイルにはFoo::Barってクラスを定義してね」ということみたいです。
Deviseのコントローラーをカスタムしたら、今まで動いていたのにこのエラーが出て動かなくなってしまいました。しかもときどき動いたり動かなかったりする*1し、一見すると何も問題ないようにも見えるので余計にたちが悪いです。色々調べた結果、原因はマウントしていたGrapeでした。
app/api/api.rb
に
class API < Grape::API
というクラスを定義していたのですが、これがだめだったようです。その証拠に、クラス名を
class Api < Grape::API
とするときれいさっぱり出なくなりました。ルールを守らない開発者はこういうエラーに遭うわけですね。ちなみに「このエラーメッセージってなんか親切じゃないよねー」みたいなIssueが上がっていたようです。
*1:どうしてときどき動いたり動かなかったりしたのか、その原因はいまだに謎