Rails アプリを動かそうとしたら「Missing helper file」というエラーが発生する件

この前練習で Rails アプリを作っていたら遭遇した。

例えば「RailsPractice」というアプリを作り、Scaffold なんかで適当に機能をデッチ上げ、rails serverhttp://localhost:3000/ にアクセスしたとする。するとこんなエラーが出たのだ。

Missing helper file helpers//Users/xxxx/Rails_Practice/app/helpers/application_helper.rb_helper.rb

よく見ると、「RailsPractice」というパスカルケースのディレクトリ名なのに「Rails_Practice」となぜかスネークケースになっている。また、最後のヘルパーファイルの名前も「application_helper.rb___helper.rb__」 と、なぜか「_helper.rb」が2回繰り返されてしまっている。

遭遇した環境は Windows10・64bit で、Ruby 2.2.3、Rails 5.0.2 だが、特定の OS・バージョンに起因する問題ではないらしい。

調べてみると、どうやら Rails がパスを正規表現で解釈するところにバグがあるみたい。

解消法としては、Rails アプリのディレクトリ名を一旦違う名前に変更し、元の名前に戻してやると、なぜか解消する。

# なぜかこうやって一度変更して戻すだけで問題が解消する
$ mv RailsPractice xxx
$ mv xxx RailsPractice

単なるリネームで解消しない場合は、例えば「xxx」にディレクトリ名を変更したら、新たに「RailsPractice」ディレクトリを作り、中身をソックリそちらに移動させたりする。結局は同じディレクトリ名で、ファイルや設定は何も変更していないのだが、これで解消する。

参考

みんな「ディレクトリ名変えたらなぜか直ったよ」とだけ言っていて、なぜなのかが分からなくてモヤモヤする。が、とりあえず直ったのでこれでいい。w