我们正在尝试使用 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
如果有人对如何解决这个问题有任何想法,或者甚至为什么它会在没有任何明显相关更改的情况下开始发生,我们将不胜感激。
谢谢,马特