この前練習で 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
ぼくが Rails アプリ作成時に参考書としているのは以下の2冊。Rails 5 が出ているけど、基礎は変わらないので今でも繰り返し読んでいる。

Ruby on Rails 4 アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2014/04/11
- メディア: 大型本
- この商品を含むブログ (6件) を見る

- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/06
- メディア: 大型本
- この商品を含むブログ (8件) を見る