font-awesome-rails を入れたは良いけど読み込まれなくなって困ってしまったので原因を追いかけたメモ。include_all_helpers は true の状態なのに false 状態のような感じになっていた。Railsは詳しくないのでちょっと苦労しました。
環境としては Ruby 2.2.4, Rails 4.1.6 です。
結論
入れていたgemが悪さをしていました。今回は grape-rails-routes
というものでした。
原因
Helperは最初にApplicationControllerなどがロードされたタイミングで ApplicationController.helper :all
が読み込まれます。
(この辺のコード参照)
https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/railties/helpers.rb
上記コードを見ればわかるように、 helpers_path
というものがあるのですが、上記のGemが入っている状態だとここに値が入る前に helper:all
が呼びだされてしまっていました。悪さをしていたGemでいうと下記のコードが原因と思われます。読み込まれる順序を無視してControllerをrequireしてしまっている。。
対応
下記のどちらかで対応すれば良さそう。
1. 該当のGemを削除する
これができるなら一番良い気がします。今回のGemは特に必要なものではなかったので削除して対応完了しました
2. helper :all
を明示的に呼び出すWorkaroundを入れる
environment.rb
の Rails.application.initialize! の直後に
ApplicationController.helper :all
を入れる。ソース見た限りでは副作用は特になさそうです(もちろん起動は少し遅くなりますが)