rails g系のコマンドでコントローラーと一緒に生成されて、さもネームスペース切られてまっせ的な雰囲気を醸し出しているhelperさんですが、どうやら一緒くたんにロードされているらしく、どのviewからも余裕でメソッドコール出来る始末。
1コントローラーに全部インクルードされるんですか!気持ち悪いですね!ということで色々調べた結果、詳細はちゃんとrelase noteに記述してあったというオチ。
3_1_release_notes.md
* Added `config.action_controller.include_all_helpers`. By default `helper :all` is done in `ActionController::Base`, which includes all the helpers by default. Setting `include_all_helpers` to `false` will result in including only application_helper and the helper corresponding to controller (like foo_helper for foo_controller).
なので、
config.action_controller.include_all_helpers = false
を設定すればおk。
ううーむ。includeするしないの処理が重たいとか...?デフォルトでオンになってる理由はわかんなかったです。
追記
設定を切り替えた際に、helperがちゃんと存在するかどうかは、RSpecのControllerの設定で拾えそう
describe HogeController do
# この設定をすると実際にviewを描画する
render_views
...
end