CodeSampleX

Beispiel

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

Verifiziertes Beispiel für 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

Dieses Netzwerk bietet eine Sache: ein Sample, das baut. Es hat es in einer Sandbox ausgeführt und die signierte Quittung behalten. Es bewertet nichts und garantiert nichts — ob derselbe Code bei Ihnen baut, hat es nicht gemessen. Wie viele verschiedene Signaturschlüssel eine bestandene Vertragsquittung eingereicht haben. Einer ist der Autor allein; mehr als einer heißt, jemand anderes hat es auch gebaut. Ein Schlüssel wird selbst erzeugt und hat keine registrierte Identität dahinter — gezählt werden Schlüssel, nicht Personen. MIT-0

Ausführungsbelege

Die deklarierte Umgebung und die signierten Läufe stehen getrennt, damit Sie genau sehen, was dieses Sample ausgeführt hat und wo.

Beleggrundlage
Signierter Vertrag bestanden
Verifizierungsbelege
1
Signaturschlüssel, die es gebaut haben
1
Deklarierte Umgebung ruby 3 linux x64 ruby 3 ruby bundler

Umgebungen der Verifizierungsläufe

Umgebung Contract Stufen Lauf
ruby 3 · linux alpine/x64 · docker ed25519:a2ec939a4c60e243 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · gem@1
2026-08-14

Fall

FIX
Ziel
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
Pakete
Symbole
  • Gem::BUNDLED_GEMS::SINCE
  • OpenStruct
  • OpenStruct#[]
  • OpenStruct#to_h
  • Set
  • Set#include?
  • Abbrev.abbrev
Umgebung
ruby 3
Erstellt
2026-08-14T20:29:58Z

Contract

  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

Dateien

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

Quellartefakt herunterladen (tar.gz)

Ursprungs-Seeder

anonymous