这一行:
@page = @page.launch_profile(@profile_name)
导致此错误:
undefined method `launch_profile' for #<Object:0x007f9013d785e8> (NoMethodError)
如果我puts "Page = #{@page} "{@page.class}"
在抱怨的电话之前立即添加,我会得到
Page = #<OwnProfilePage:0x007f9013bf5e78> OwnProfilePage
奇怪的是,在命令行上,相同版本的 Ruby (2.1.5) 会这样做:
$ ruby -le 'class Dog; end; Dog.new.foo'
-e:1:in `<main>': undefined method `foo' for #<Dog:0x007fb64120c6d8> (NoMethodError)
所以我知道它通常有效。
我尝试向 中添加一个method_missing()
方法Object
,但它没有任何影响,所以我认为其他人在其他地方正在修补猴子或覆盖或以其他方式破坏元数据。我什至修补NoMethodError.new()
了打印堆栈跟踪以尝试定位错误代码。
此外,当在遥远的随机宝石中可能存在如此多的伏都教和其他考虑不周的全球变化废话时,是否有一个合理的通用方法来确定 Ruby 系统的哪一部分正在做什么?(在另一种情况下,'fail' 开始报告上一个获救异常的消息,而不是我提供的字符串。)