CodeSampleX

Пример

csv 3.3.2: Show that CSV.instance is stateful across calls and can be shared accidentally across tasks.

Проверенный пример — gem csv 3.3.2: Show that CSV.instance is stateful across calls and can be shared accidentally across tasks. Контракт выполнен на ruby 3…

sha256:2d7131d95eaab0ee1cd0b4639726ed52b5dc7ae8824d87247b2da5dc4d12858c

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

Свидетельства выполнения

Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.

Основа свидетельства
Подписанный контракт пройден
Квитанции проверки
2
Ключи подписи, собравшие его
1
Заявленная среда ruby linux x64 ruby ruby rubygems

Среды запусков проверки

Окружение Контракт Этапы Запуск
ruby 3 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · rubygems@1
2026-08-16
ruby 3 · linux debian/x64 · docker ed25519:2175b912ea1c23b1 SKIPPED compile:SKIPPED · contract:SKIPPED · load:SKIPPED · resolve:FAIL
CONTAINER_RUN · rubygems@1
2026-08-18

Кейс

HOW
Цель
Show that CSV.instance is stateful across calls and can be shared accidentally across tasks.
Пакеты
Символы
  • CSV.instance
Окружение
ruby
Создан
2026-08-16T15:31:10Z

Контракт

  1. CSV.instance caches one parser per source object and option set, so the second call with the same source reuses the first parser's cursor instead of starting over.
  2. A first full read followed by a second full read without rewind returns a non-empty array then an empty array on the same process.
  3. Two task-local references created with CSV.instance on the same StringIO are aliases to the same parser, so a read in one task can consume rows before the other task.

Файлы

  • Gemfile
  • NOTES.md
  • csx.json
  • test/contract.rb

Скачать артефакт с исходным кодом (tar.gz)

Исходный сидер

csx-seed