黄瓜::耙::任务不使用红宝石--1.9?

时间:2012-07-05 21:17:53

标签: cucumber rake jruby factory-bot

我们正在尝试使用Rake在我们的构建服务器上运行Cucumber测试。一切都运行良好几周,但昨晚我们开始看到错误

C:\jruby-1.6.7\bin\jruby.exe --1.9 -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) C:\jruby-1.6.7\bin\rake manual_tests
(in <local_folder_name>)
C:/jruby-1.6.7/bin/jruby -I "C:/jruby-1.6.7/lib/ruby/gems/1.8/gems/cucumber-1.2.1/lib;lib" "C:/jruby-1.6.7/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/cucumber" --dry-run --format html --out results/manual-tests.html --format progress --tags ~@wip --tags @manual
C:/jruby-1.6.7/lib/ruby/gems/1.8/gems/factory_girl-3.1.0/lib/factory_girl/null_factory.rb:9: syntax error, unexpected ':'

delegate :defined_traits, :callbacks, :attributes, :constructor, to: :definition
                                                                   ^ (SyntaxError)

经过进一步调查,我们发现这是Ruby -1.9的新哈希语法,所有其他网站建议升级或在jruby中指定使用--1.9。但是,我们已经设置了所有可能的选项来使用Ruby 1.9,但我们仍然看到这个错误。

为了使它更奇怪,我们也使用Rake运行一些rspec单元测试,使用相同的代码库,只是测试是不同的。它在rspec中运行得很好,让我们想知道错误是否与Cucumber :: Rake :: Tasks没有意识到我们在Ruby 1.9中

这是正在运行的命令行参数,您可以清楚地看到它正在运行--1.9:

 C:\jruby-1.6.7\bin\jruby.exe --1.9 -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) C:\jruby-1.6.7\bin\rake manual_tests
(in <local_folder_name>)
C:/jruby-1.6.7/bin/jruby -I "C:/jruby-1.6.7/lib/ruby/gems/1.8/gems/cucumber-1.2.1/lib;lib" "C:/jruby-1.6.7/lib/ruby/gems/1.8/gems/cucumber-1.2.1/bin/cucumber" --dry-run --format html --out results/manual-tests.html --format progress --tags ~@wip --tags @manual

如果有人对如何解决这个问题有任何想法,或者甚至为什么它会在没有任何明显相关变化的情况下开始发生,我们将非常感激。

谢谢, 马特

1 个答案:

答案 0 :(得分:0)

我们终于解决了这个问题,并且正如预期的那样,当JRuby和Cucumber设置为使用-1.9时,当我们尝试通过rake运行它时,它仍然试图使用--1.8。为了解决这个问题,我们为构建的rake创建了一个环境变量:

JRUBY_OPTS=--1.9

我们仍然不确定为什么之前有效,而且最近才开始失败,所以如果您有任何想法,请随时发表评论。感谢。