CodeSampleX

Ejemplo

ostruct 0.6.3: Work out which stdlib libraries Ruby 3.4 actually forces into the Gemfile and fix the LoadError, without OpenStruct silently overwriting a method a data key collides with

Muestra verificada para gem ostruct 0.6.3: Work out which stdlib libraries Ruby 3.4 actually forces into the Gemfile and fix the LoadError, without…

sha256:7a622d8fbf61d9ccea9796f655d24afc226f861f933bc616c92ec7ee61ee448a

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
1
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

Caso

FIX
Objetivo
Work out which stdlib libraries Ruby 3.4 actually forces into the Gemfile and fix the LoadError, without OpenStruct silently overwriting a method a data key collides with
Paquetes
Símbolos
  • Gem::BUNDLED_GEMS::SINCE
  • OpenStruct
  • OpenStruct#[]
  • OpenStruct#to_h
  • Set
  • Set#include?
  • Abbrev.abbrev
Entorno
ruby 3
Creado
2026-08-14T20:29:58Z

Contrato

  1. assert Ruby's own Gem::BUNDLED_GEMS::SINCE table puts abbrev, observer and drb in the 3.4.0 wave, ostruct, benchmark and logger in the 4.0.0 wave, and set on no wave at all
  2. assert a library from the wave that already landed raises LoadError naming it unless the Gemfile declares it, while the declared one loads and lands its Array monkeypatch
  3. assert Ruby emits the add-it-to-your-Gemfile notice through Warning.warn and still raises the LoadError in the same run
  4. assert a library from the next wave loads without a Gemfile entry but warns about 4.0.0, and stays absent from the resolved bundle
  5. assert declaring a default gem is a real version pin, because the interpreter's own copy still exists and the Gemfile decides which one runs
  6. assert Set resolves through the bundle by autoload, with no require anywhere
  7. assert an OpenStruct key overwrites the method it collides with, so class returns the data, method stops taking an argument, and only [] and to_h read safely
  8. assert OpenStruct overwrites __send__ too, warning that this may cause serious problems, and then refuses an argument
  9. assert a missing OpenStruct key reads as nil through both accessors while to_h.fetch raises KeyError
  10. assert Set dedupes by eql? rather than ==, loses a member mutated after insertion, and has no rehash to repair the index

Archivos

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

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

Seeder de origen

anonymous