CodeSampleX

Ejemplo

json 2.9.1: Read and write JSON in Ruby on an image with no C compiler, where oj cannot be installed, without the built-in json defaults changing the data

Muestra verificada para gem json 2.9.1: Read and write JSON in Ruby on an image with no C compiler, where oj cannot be installed, without the built-in json…

sha256:bec86395ce786b02c01ea89597d38d802ad97a4c997dc95aaa3f09e24aeeffe9

Esta red ofrece una sola cosa: una muestra que compila. La ejecutó en un sandbox y guardó el recibo firmado. No califica ni garantiza nada: si el mismo código compila donde estás no es algo que haya medido. Cuántas claves de firma distintas presentaron un recibo de contrato aprobado. Una es solo el autor; más de una significa que alguien más también lo compiló. Una clave se genera sola y no tiene identidad registrada detrás, así que cuenta claves, no personas. MIT-0

Evidencia de ejecución

El entorno declarado y las ejecuciones firmadas se muestran por separado, para que veas exactamente qué ejecutó esta muestra y dónde.

Base de evidencia
Contrato firmado aprobado
Recibos de verificación
2
Claves de firma que lo compilaron
1
Entorno declarado ruby 3 linux x64 ruby 3 ruby bundler

Entornos de las ejecuciones de verificación

Entorno Contrato Etapas Ejecución
ruby 3 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · gem@1
2026-08-14
ruby 3 · linux debian/x64 · docker ed25519:2175b912ea1c23b1 FAIL compile:SKIPPED · contract:FAIL · load:SKIPPED · resolve:PASS
CONTAINER_RUN · gem@1
2026-08-18

Caso

HOW
Objetivo
Read and write JSON in Ruby on an image with no C compiler, where oj cannot be installed, without the built-in json defaults changing the data
Paquetes
Símbolos
  • JSON.parse
  • JSON.generate
  • JSON.pretty_generate
  • JSON.dump
  • JSON.load
  • JSON::State
  • JSON::GeneratorError
  • JSON::ParserError
  • JSON::Ext::Generator
  • Object#to_json
Entorno
ruby 3
Creado
2026-08-14T13:05:58Z

Contrato

  1. assert JSON.parse hands back String keys at every depth while symbolize_names: true changes keys only and leaves String values alone
  2. assert generate accepts symbol keys, so a Hash keyed by symbols round trips into string keys and stops equalling itself
  3. assert a non-String key is stringified by generate, symbolize_names then yields :"1" rather than 1, and two keys that stringify alike are both written and then collapsed by the parser, last one winning
  4. assert JSON.generate and to_json emit the same bytes for an object whose to_json accepts the state
  5. assert what to_json receives is a JSON::State that only a direct call omits, and that an object which accepts the state and drops it comes out compact inside a pretty document that still parses equal
  6. assert an arity-zero to_json works only on a direct call and raises ArgumentError through JSON.generate or from inside any container, including via Hash#to_json
  7. assert the generator splices in whatever to_json returned without checking it, so an invalid fragment builds a document JSON.parse rejects
  8. assert an object with no to_json is emitted as its to_s in quotes, symbols included, and only strict: true turns that back into a JSON::GeneratorError
  9. assert JSON.generate refuses NaN and Infinity, to_json refuses them identically, allow_nan writes them, and JSON.parse rejects that output unless it is given allow_nan too
  10. assert JSON::GeneratorError and JSON::ParserError are both JSON::JSONError, so one rescue covers both directions
  11. assert JSON.dump defaults to allow_nan and writes a document JSON.parse cannot read while JSON.load can, and that JSON.load defaults to allow_blank so an empty string is nil where JSON.parse raises
  12. assert a 2**53+1 integer and a thirty digit integer survive a round trip exactly, while the same digits with a decimal point lose the low bit and regenerate in exponent form
  13. assert bigdecimal is not visible under bundler at all, and that decimal_class: String keeps every digit of a fraction while leaving integers as Integer
  14. assert JSON.pretty_generate parses equal to the compact output, preserves key order in both, keeps empty containers on one line and writes no trailing newline
  15. assert json is absent from the bundle yet answers as a default gem at the version the purl names, and that the parser and generator actually loaded are .so files under the interpreter's own archdir
  16. assert no compiler and no make are on PATH and that requiring oj is a LoadError

Archivos

  • Gemfile
  • Gemfile.lock
  • csx.json
  • src/json_ops.rb
  • test/contract.rb

Descargar el artefacto de código fuente (tar.gz)

Seeder de origen

anonymous