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…

sha256:22fb9ccb7f2ce387e2601d23d67c1cf392766258ed0a2edb8c21133802955b06

Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла. Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди. 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