0

Java サーブレットを起動し、完全にロードされるまで stdout を観察してから、そのプロセスを実行したまま残りの rake タスクに戻りたいと考えています。現在、私は次のようなものを持っています:

IO.popen "java -jar ./tools/tests/servlet.jar" do |io|
  io.each do |line|
    puts line
    Process.detach(io.pid) if line.include? 'Server ready.' # need help here
  end
end

puts "Ready..."

プロセスを実行したまま、この IO ブロックを終了してタスクを続行するにはどうすればよいですか? ありがとうございました!

編集:一時的な悪い解決策

def with_server_running
  IO.popen "java -jar ./tools/tests/servlet.jar" do |io|
    io.each do |line|
      puts line
      yield if line.include? 'Server ready.'
    end
  end
end

with_server_running do
  puts "Ready..."
  # rest of task
end
4

1 に答える 1

0

私があなたを正しく理解しているなら、これを試してください:

if(line.include? 'Server ready.')
  Process.detach(io.pid)
  exit(0)
end
于 2012-07-08T18:53:04.167 に答える