CodeSampleX

Exemple

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

Échantillon vérifié pour 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

Ce réseau offre une seule chose : un échantillon qui compile. Il l'a exécuté dans un bac à sable et conservé le reçu signé. Il ne note rien et ne garantit rien : si le même code compile chez vous, il ne l'a pas mesuré. Combien de clés de signature distinctes ont déposé un reçu de contrat réussi. Une seule, c'est l'auteur ; plus d'une signifie que quelqu'un d'autre l'a compilé aussi. Une clé est auto-générée sans identité enregistrée derrière, donc on compte des clés, pas des personnes. MIT-0

Preuves d'exécution

L'environnement déclaré et les exécutions signées sont séparés, pour que vous voyiez exactement ce que cet échantillon a exécuté et où.

Base de preuve
Contrat signé réussi
Reçus de vérification
1
Clés de signature qui l’ont compilé
1
Environnement déclaré ruby 3 linux x64 ruby 3 ruby bundler

Environnements des exécutions de vérification

Environnement Contrat Étapes Exécution
ruby 3 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · gem@1
2026-08-14

Cas

FIX
Objectif
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
Paquets
Symboles
  • Gem::BUNDLED_GEMS::SINCE
  • OpenStruct
  • OpenStruct#[]
  • OpenStruct#to_h
  • Set
  • Set#include?
  • Abbrev.abbrev
Environnement
ruby 3
Créé
2026-08-14T20:29:58Z

Contrat

  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

Fichiers

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

Télécharger l’artefact source (tar.gz)

Seeder d'origine

anonymous