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 に答える