
Issue #19893 has been updated by znz (Kazuhiro NISHIYAMA). I think you should define `respond_to_missing?` too. ```ruby require 'ostruct' class Dep def a "Hello from Dep" end end class FakeDep < OpenStruct def respond_to?(*args) super || Dep.new.respond_to?(*args) end def respond_to_missing?(*args) super || Dep.new.respond_to?(*args) end end FakeDep.new(a: []) # no error ``` ---------------------------------------- Bug #19893: OpenStruct#respond_to? when true fails with NameError https://bugs.ruby-lang.org/issues/19893#change-104675 * Author: msxavi (Emerson Xavier) * Status: Open * Priority: Normal * ruby -v: 3.1.4 * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- Hello, I have a case where I overrode respond_to? on a subclass of OpenStruct because I this class to work as fake object. ``` class Dep def a "Hello from Dep" end end class FakeDep < OpenStruct def respond_to?(*args) super || Dep.new.respond_to?(*args) end end FakeDep.new(a: []) NameError: undefined method `a' for class `FakeDep' owner = method!(name).owner ^^^^^^^ from /usr/local/lib/ruby/3.1.0/ostruct.rb:245:in `method' ``` Is this a valid issue? Also posted in https://github.com/ruby/ostruct/issues/55 -- https://bugs.ruby-lang.org/