我method_missing
用来为词汇表中的命名空间常量定义一个类。为了有效,我需要继承自 的词汇类BasicObject
,否则没有任何标准对象方法可用作词汇术语(因为该方法没有丢失:)。但是,当我从 继承时BasicObject
,我发现我无法在另一个模块中调用实用程序方法。以下代码以精简形式说明了该问题:
module Foo
class Bar
def self.fubar( s )
"#{s} has been fubar'd"
end
end
end
class V1
def self.method_missing( name )
Foo::Bar.fubar( "#{name} in v1" )
end
end
class V2 < BasicObject
def self.method_missing( name )
Foo::Bar.fubar( "#{name} in v2" )
end
end
# this works
puts V1.xyz
# => xyz in v1 has been fubar'd
# this doesn't
puts V2.xyz
# => NameError: uninitialized constant V2::Foo
当我尝试调用帮助程序模块时,我需要添加什么V2
以便它不会产生统一的常量错误?