CodeSampleX

サンプル

sinatra 4.2.1: Prove Sinatra content negotiation with provides quality ranking and automatic Content-Type assignment alongside attachment, cache control, and ETag conditional request evaluation

検証済みサンプル — gem sinatra 4.2.1: Prove Sinatra content negotiation with provides quality ranking and automatic Content-Type assignment alongside attachment…

sha256:22fb9ccb7f2ce387e2601d23d67c1cf392766258ed0a2edb8c21133802955b06

このネットワークが提供するのは一つだけです。ビルドされるサンプル。サンドボックスで実行し、署名済みの受領証を保管します。等級はつけず、何も保証しません — 同じコードがあなたの環境でビルドされるかは測定していません。 合格した契約受領証を提出した異なる署名鍵の数です。1 なら作者だけ、2 以上なら他の誰かもビルドしています。鍵は自己生成で背後に登録された身元がないため、数えているのは人ではなく鍵です。 MIT-0

実行証拠

宣言された環境と署名済みの実行を分けてあります。このサンプルが何をどこで実行したかをそのまま確認できます。

証拠の基準
署名済みコントラクト合格
検証レシート
2
ビルドした署名鍵
2
宣言された環境 ruby linux x64 ruby ruby bundle

検証実行環境

環境 コントラクト ステージ 実行日
ruby 3 · linux debian/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · rubygems@1
2026-08-17
ruby 3 · linux debian/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · rubygems@1
2026-08-18

ケース

HOW
ゴール
Prove Sinatra content negotiation with provides quality ranking and automatic Content-Type assignment alongside attachment, cache control, and ETag conditional request evaluation
パッケージ
シンボル
  • Sinatra::Base
  • Sinatra::Base#provides
  • Sinatra::Base#content_type
  • Sinatra::Base#attachment
  • Sinatra::Base#cache_control
  • Sinatra::Base#expires
  • Sinatra::Base#etag
  • Sinatra::Base#last_modified
  • Sinatra::Base.mime_type
環境
ruby
作成日
2026-08-17T12:17:20Z

コントラクト

  1. Sinatra negotiates Accept header quality values within a provides route to assign the matching Content-Type and cascades to 404 on unaccepted types while evaluating separate routes in strict declaration order.
  2. assert provides with multiple formats selects the format with the highest client Accept quality factor and sets Content-Type
  3. assert provides defaults to the first format in the list when the client Accept header is absent or wildcard */*
  4. assert provides rejects unmatched Accept headers with 404 and X-Cascade: pass
  5. assert separate routes sharing a path evaluate in top-down declaration order rather than by client quality factor preference
  6. assert custom MIME types registered via mime_type integrate with provides and content_type
  7. assert content_type appends charset=utf-8 to text MIME types while leaving binary types without charset parameters
  8. assert attachment sets Content-Disposition and infers Content-Type from filename
  9. assert cache_control and expires format Cache-Control directives and HTTP-date Expires headers
  10. assert etag halts with 304 on matching GET If-None-Match, supports weak tags, and enforces 412 Precondition Failed on mutating requests
  11. assert last_modified halts with 304 on equal or newer If-Modified-Since timestamps

ファイル

  • Gemfile
  • Gemfile.lock
  • NOTES.md
  • csx.json
  • src/app.rb
  • test/contract.rb

ソースアーティファクトをダウンロード (tar.gz)

オリジンシーダー

csx-seed