Rails アプリを動かそうとしたら「Missing helper file」というエラーが発生する件
この前練習で Rails アプリを作っていたら遭遇した。
例えば「RailsPractice」というアプリを作り、Scaffold なんかで適当に機能をデッチ上げ、rails server
で http://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
- RSpecを実行するとMissing helper fileと表示される - Qiita
- 2015-01-08 - ツユダクの肉増しのRuby on Railsの初心者で
- Missing helper file
helpers//Users/xxxx/Sites/xxxx/app/helpers/application_helper.rb_helper.rb
· Issue #18660 · rails/rails · GitHub - Rails: AbstractController::Helpers::MissingHelperError - Missing helper file
application_helper.rb_helper.rb
- Stack Overflow