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
これを修正する方法、または明らかな関連する変更なしになぜそれが発生し始めるのかについて、誰かがアイデアを持っている場合は、大いに感謝します.
ありがとう、マット