LoginSignup
1
1

More than 5 years have passed since last update.

[Rails]Controllerに対応するカスタムHelperしか読み込まれなくなった問題とその対応

Posted at

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

を入れる。ソース見た限りでは副作用は特になさそうです(もちろん起動は少し遅くなりますが)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1