以下Pry会话是莫名其妙的。我打电话给const_get
,AFAIK只是得到一个常数,不知怎的,require
被调用(并且失败并出现错误)。但它不能是const_missing
钩子,因为常量是定义的,可以通过查看constants
方法的输出(以及查看{{1}的返回值)看出})(const_defined?
和constants
似乎都没有monkeypatched):
const_get
答案 0 :(得分:0)
如果一个类的主体这样做:
class Foo
autoload :ConstantName, 'some/file'
end
......即使不是这样,常数也会显示为已定义。评估常量的一种方式可以产生副作用,例如打印到终端的东西,打开的网络连接,以及你可以想象放在源文件正文中的任何东西。
Foo::ConstantName # Possibly opens your web browser
# and points it to something vulgar.
# Then installs a rootkit.