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/