Delayed_Job执行rake而不是重定向输出

时间:2010-12-31 03:31:08

标签: ruby-on-rails ruby passenger

我有一个目前正通过延迟工作执行的课程。其中一项任务是执行“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。我的服务器是运行Passenger的Ubuntu。

任何人都有任何想法为什么输出不会重定向?

由于

1 个答案:

答案 0 :(得分:2)

尝试在cmd上没有STDFDES重定向 这是我使用的和我得到的。

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

结果:

  

“用户PID%CPU%MEM VSZ RSS TT STAT启动
  TIME COMMAND \ n“”mitch 423 3.4 1.0 2750692 159552 ??   S 23Apr12 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 \ n“”mitch 78896 2.0 0.8 1067248 136088 ?? 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“