Delayed_Job выполняет рейк, не перенаправляя вывод - PullRequest
2 голосов
/ 31 декабря 2010

У меня есть класс, который в настоящее время выполняется через отложенное задание.Одной из задач является выполнение «rake spec» и перенаправление вывода.

Я делаю это так:

class Executor
  def execute_command(cmd, &block)
    STDOUT.sync = true # That's all it takes...
    IO.popen(cmd + " 2>&1") do |pipe| # Redirection is performed using operators
      pipe.sync = true
      while str = pipe.gets
      block.call str # This is synchronous!
      end
    end

    return $?.success?
  end
end

Тем не менее, ни один из выходных данных не появляется, и он даже не знает, как правильно выполнить модульные тесты.

Capistrano работает и работает на OSX.У меня на сервере работает Ubuntu Passenger.

У кого-нибудь есть идеи, почему вывод не будет перенаправлен?

Спасибо

Бен

1 Ответ

2 голосов
/ 12 мая 2012

Попробуйте без перенаправления STDFDES на cmd вот что я использовал и что я получаю.

class Executor
  def execute_command(cmd, &block)
    STDOUT.sync = true # That's all it takes...
    IO.popen(cmd) do |pipe| # Redirection is performed using operators
      pipe.sync = true
      while str = pipe.gets
       block.call str # This is synchronous!
      end
    end

    return $?.success?
  end
end

Протестировано с:

ex = Executor.new
ex.execute_command "ps aux" do |str|
   p str
end

результат:

"USER PID% CPU% MEM VSZ RSS STAT STATED НАЧИНАЕТСЯ
КОМАНДА ВРЕМЕНИ \ n" "mitch 423 3.4 1.0 2750692 159552 ?? S 23 апреля 19: 41.59 /Users/mitch/iTerm.app/Contents/MacOS/iTerm-psn_0_40970 \ n "" _windowserver 90 3.1 1.8 3395124 301576 ?? Ss 20Apr12 75: 19.86 /System/Library/Frameworks/ApplicationServices.framework/Frameworks/CoreGraphics.framework/Resources/WindowServer -daemon 7 067 088 096 8 0,88 "n136088 ?? R Thu03PM 37: 46.59 /Applications/Spotify.app/Contents/MacOS/Spotify -psn_0_4900012 \ n "" mitch 436 1,8 1,0 1063952 169320 ?? S 23Apr12 100: 23,87 /Applications/Skype.app/Contents/MacOS/Skype -psn_0_90134 \ n "

...