我的Ruby Minitest失败并出现如下错误:
<"undefined method `Error' for Api:Module">
它实际上不是一个缺少的方法,它是一个类:
class Api::Error
此类在lib / api / error.rb中定义。
我尝试在rails 2应用程序中将此行添加到config / environment.rb:
config.autoload_paths += %W( #{RAILS_ROOT}/lib )
它什么都不做。我不知道在哪里或是否定义了RAILS_ROOT(它是标准的rails 2变量吗?),但是我从现有源代码中的注释掉的行中复制了它。
如何确保加载类或找到未包含的类? Api :: Error子类在许多文件中引发,我不想全部编辑它们。由于无法找到类,因此堆栈跟踪不会列出发生实际加注的位置。使用pry逐步执行代码是行不通的,因为只要我进入&#34; get&#34; Webservice模拟中的方法,我无法介入。
答案 0 :(得分:0)
一旦我发现异常被提出的地方,我就进行了实验。
这就是代码最初的原因,导致了这个问题:
raise Api::Error @p4_client
这是我所做的改变:
raise Api::Error.new(@p4_client)
使用new显式调用构造函数而不是让Ruby中的引发逻辑解决问题。
没有显式调用的逻辑在1.8.7中工作正常,但在1.9.3中失败。 一切都通过Actionpack层进行委派。