rigor-rspec-rails
引数が静的に検査可能なrspec-railsの振る舞い系マッチャーを検証します ── 現在はhave_http_status(int_or_symbol)で、範囲外のステータスコードとタイポされたステータスシンボルをフラグします。これはrigor-rspecの振る舞い系の兄弟分です。rigor-rspecがbe_a / be_nil / eq(literal)のようなマッチャーを通じてローカル変数の型をナローイングするのに対し、rigor-rspec-railsは何もナローイングせずにマッチャー引数に対してドメインdiagnosticを出します。両者は独立して有効化され、合成されます。
これはrigortypeにバンドルされて配布されます。plugins:の下で(通常はrigor-rspecと並べて)有効化します。
plugins: - rigor-rspec - rigor-rspec-railsWhat it checks
Section titled “What it checks”RSpec.describe HomeController do it "returns 200" do expect(response).to have_http_status(200) # OK expect(response).to have_http_status(:ok) # OK expect(response).to have_http_status(:success) # OK(Rails 2xxグループエイリアス) expect(response).to have_http_status(99) # 警告: 範囲外 expect(response).to have_http_status(:succes) # 警告: 未知のシンボル(タイポ) endend| ルール | 重大度 | 発火条件 |
|---|---|---|
plugin.rspec-rails.have_http_status.out-of-range | warning | 整数引数が100..599の範囲外である |
plugin.rspec-rails.have_http_status.unknown-symbol | warning | シンボル引数が既知のRackステータスコードでもRailsステータスグループエイリアスでもない(did-you-mean付き) |
受理されるステータスシンボルは、vendoringされたスナップショットではなく、解析時に読み取られる本物のRack::Utils::SYMBOL_TO_STATUS_CODE(have_http_status自身が使うのと同じ権威)に由来します ── そのため新たに追加されたRackシンボルがタイポと誤認されることはありません(ADR-39)。Rackをロードできない場合、プラグインはどのシンボルもフラグすることを控えます(カバレッジは縮小しますが、偽陽性は決して出しません)。8つのRailsステータスグループエイリアス(:success、:successful、:missing、:redirect、:error、:client_error、:server_error、:informational)は、小さく安定した定数集合です。検査されるのはリテラルの整数 / シンボル引数のみで、文字列・変数・計算式は素通りします。
このプラグインに設定ノブはありません。
have_http_statusのみ。他のrspec-railsマッチャーは、プラグイン間の調整待ちのキューに入っています。render_template(rigor-actionpackのレンダーターゲット検証と重複)、route_to/redirect_to/be_routable(rigor-rails-routesのテーブルが必要)、have_enqueued_job/have_received(エンジンの定数 / undefined-methodルールと重複)。- リテラル引数のみ ── 変数やメソッド呼び出し経由で渡されたステータスは静的に検査できないため、黙って受理されます。
プラグインの内部
Section titled “プラグインの内部”マッチャーの認識器(recognizer)、Rackテーブルのルックアップ、このプラグインが行使する契約(contract)のサーフェス(surface)については、プラグインのREADMEにあります。プラグインの書き方についてはexamples/とrigor-plugin-authorスキルを参照してください。
© 2026 TypedDuck. Licensed under CC BY-SA 4.0.