From: "byroot (Jean Boussier) via ruby-core" Date: 2024-10-21T16:49:10+00:00 Subject: [ruby-core:119578] [Ruby master Bug#20808] Cannot override Data#inspect Issue #20808 has been updated by byroot (Jean Boussier). > Struct and Data both assume all member readers are public: Actually I misread. The `Struct` one uses `Struct#[]` so it would work with Struct. `Data` however has no such method, so two solutions I can think of are: - Use `send`, but only work for private. If instead the method is renamed or removed, it will still fail. - Rescue `NoMethodError`, and skip displaying that field. ---------------------------------------- Bug #20808: Cannot override Data#inspect https://bugs.ruby-lang.org/issues/20808#change-110197 * Author: maicolben (Maicol Bentancor) * Status: Open * ruby -v: 3.3.5 * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- Given the next code: ``` Dog = Data.define(:name) do def inspect "Hello!" end private attr_reader :name end Dog.new(name: "Fido") ``` It throws an error: - An error occurred when inspecting the object: # And isn't using my `inspect` function -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/