Ruby优化不在CI服务器中工作

Mig*_*ing 5 ruby linux ruby-2.0

我在Jenkins服务器中遇到错误:

$ ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]
Run Code Online (Sandbox Code Playgroud)

运行rspec时,我有以下错误:

 undefined method `using' for #<Class:0x000000026f9c88> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

完全相同的代码在我的本地计算机上运行,​​使用ruby2.这是我的版本:ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-linux] 此外,它适用于irb.似乎ruby using在运行脚本时没有识别语句.

这是代码:

describe "blah" do
    include TestHelper
    using TestHelper::BrowserRefinement
    ...
end
Run Code Online (Sandbox Code Playgroud)

澄清:细化在不同的文件中定义.我正在鞭打互联网,看看修订版r39474和版本之间是否存在差异r38126.

Ari*_*iao 8

在当前版本的Ruby 2.0(2.0.0p0)中,using是顶级对象的实例方法main,而不是Module.这是一种私人方法.如果在类/模块定义或方法定义中调用它,则会引发RuntimeError.

"一个改进的由激活的范围main.using是从刚好之后的点main.using被调用以该文件的结束main.using时被调用.然而,当main.using在给定的作为第一个参数的字符串被调用Kernel#eval,Kernel#instance_eval或者Module#module_eval,适用范围的端部字符串的结尾."

您可以在Refinements Specification中了解更多相关信息.

对于您的测试用例,您可以使用它们编写它们eval并传入顶级绑定,例如ruby源中的测试用例.

改进仍然是一个实验性功能,它可能在未来发生变化:-)