1

タスクに「興味深い」セグメンテーション違反があるrakeここで引用されているようにコマンドラインから実行すると、正常に動作します。1 回の呼び出しですべてのrakeタスクを実行するsystemと、segfault が発生します。

task :cruise do
  system 'rake db:reset db:test:clone teabag'
  system 'rake spec'
end

なじみのない方のために説明すると、Teabagは「Rails 上に構築された JavaScript テスト ランナー」です。したがって、ここにあるのは基本的に次のとおりです。

  1. (開発用) データベースを再初期化する
  2. 既知の状態の開発データベースからテスト データベースを複製します。と
  3. {Java,Coffee} スクリプトと Ruby/Rails の仕様を実行します。

バージョン情報:

  • OS X 10.8.2
  • ruby 1.9.3p392 (2013-02-22 リビジョン 39386) [x86_64-darwin12.2.0]
  • 使用していませんrvm
  • レール 3.2.12

私のGemfileGemfile.lockは、この Gistにあります。クラッシュ ダンプを含むタスクの出力はPastebinにあります。

編集日 2013 年 3 月 5 日 12:20 SGT (GMT+8) *

タスクを次のように書き直しました

task :cruise do
  ['db:reset', 'db:test:clone', 'teabag', 'spec'].each do |task|
    Rake::Task[task].reenable
    Rake::Task[task].invoke
  end
end

期待どおりに実行されます。Rake::Task[task].reenable( RSpec segfault を排除するために追加しなければならなかったことに注意してください)。

これは、(元の-calling タスクrakeのように) マルチタスク コマンド ラインの一部として実行された場合、またはbeforeを呼び出さずに作り直されたタスクで実行された場合に、RSpec が確実に segfault する理由をまだ解決していません。しかし、回避策があるので、質問は回答済みだと思います。systemcruisereenableinvoke

4

0 に答える 0