0

我们正在尝试使用 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

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

谢谢,马特

4

1 回答 1

0

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

JRUBY_OPTS=--1.9

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

于 2012-07-06T16:00:59.873 回答