rigor-actionpack
他のRailsプラグインが公開するファクト(fact)を消費することで(ADR-9)、コントローラー側のAction Packコードを4つの領域にわたってチェックします:
- ルートヘルパー呼び出し ──
redirect_to user_path(@user)を、rigor-rails-routesの:helper_tableに対して照合します。 - フィルタチェーン ──
before_action :nameを、コントローラー(およびその親)に定義されたメソッドに対して照合します。 - レンダーターゲット ──
render :show/render partial:を、view_search_paths下のビューテンプレートに対して照合します。 - ストロングパラメータ ──
params.require(:user).permit(:name, …)のキーを、モデルのカラム(rigor-activerecordの:model_index経由)に対して照合します。
このプラグインはrigortypeにバンドルされて提供されます。plugins:の下で、それが消費するファクトのプロデューサーと並べて有効化します:
plugins: - rigor-rails-routes # publishes :helper_table (optional) - rigor-activerecord # publishes :model_index (optional) - rigor-actionpackどちらの依存もoptionalとして宣言されています ── プロデューサーを省略したプロジェクトでも引き続きロードされます。そのファクトを必要としていた領域は、エラーになる代わりにno-opへと縮退します。
何をチェックするか
Section titled “何をチェックするか”| ルール | 重大度 | 発火するとき |
|---|---|---|
plugin.actionpack.helper-call | info | *_path/*_url呼び出しがヘルパーテーブルに対して解決された |
plugin.actionpack.unknown-helper | error | ヘルパー名がテーブルにない(「もしかして」付き) |
plugin.actionpack.wrong-helper-arity | error | 呼び出しの位置引数の個数がヘルパーの記録されたアリティ(arity)と一致しない |
plugin.actionpack.filter-call | info | フィルタ参照(before_action :name、skip_around_action、…)が定義済みメソッドに解決された |
plugin.actionpack.unknown-filter-method | error | フィルタ参照がコントローラーまたは親に定義されていないメソッドを指している(「もしかして」付き) |
plugin.actionpack.render-target | info | 明示的なrender :symbol/"string"/partial:がビューテンプレートに解決された |
plugin.actionpack.missing-template | error | 明示的なrenderが、いずれのview_search_paths下にも存在しないビューパスに解決された |
plugin.actionpack.permit-call | info | params.require(:m).permit(:key, …)チェーンが既知のモデルに解決された。キーはそのカラムに対して照合された |
plugin.actionpack.unknown-permit-key | error | リテラルのpermit(:key)がモデル上のカラムでない(「もしかして」付き) |
フィルタとレンダーの解決は、ネストしたモジュールによるコントローラーの修飾(module Admin; class WidgetsControllerはadmin/widgets/…下のビューを解決する)を尊重し、参照できないgem提供の親クラスについては沈黙します。
plugins: - gem: rigor-actionpack config: controller_search_paths: ["app/controllers"] # default view_search_paths: ["app/views"] # default- 暗黙のselfヘルパーのみ。明示的なレシーバーを持つ
*_path/*_url呼び出し(Rails.application.routes.url_helpers.x_path)は素通りします。 - パスベースのファイルフィルタ。
controller_search_paths下のファイルはクラス階層にかかわらずチェックされます。そこに置かれた非コントローラーファイル(まれ)もスキャンされてしまいます。 - カバレッジはアップストリームのファクトに従う。ヘルパーの検証は
rigor-rails-routesが公開したものだけを把握し、permitの検証はrigor-activerecordが公開したものだけを把握します ── これらのプロデューサーを有効化すると、このプラグインがチェックできる範囲が広がります。
プラグインの内部
Section titled “プラグインの内部”プラグイン横断のファクト契約(:helper_table/:model_index)、コントローラー/ビューの発見プロデューサー、デモ、そしてこのプラグインが行使する契約サーフェスは、プラグインのREADMEにあります。プラグインを書くには、examples/とrigor-plugin-authorスキルを参照してください。
© 2026 TypedDuck. Licensed under CC BY-SA 4.0.