Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在执行期间使用ruby将标准输出到文件_Ruby_Sidekiq - Fatal编程技术网

在执行期间使用ruby将标准输出到文件

在执行期间使用ruby将标准输出到文件,ruby,sidekiq,Ruby,Sidekiq,在进程运行时,将标准输出输出到文件的最佳方式是什么?我制作了一个名为“runMyScript”的测试脚本,它有一些echo语句,中间有一些sleep语句 我正在使用Rails和Sidekiq运行此worker: class RunBuildWorker include Sidekiq::Worker sidekiq_options retry: false, backtrace: true def perform(file_name) IO.popen('runMySc

在进程运行时,将标准输出输出到文件的最佳方式是什么?我制作了一个名为“runMyScript”的测试脚本,它有一些echo语句,中间有一些sleep语句

我正在使用Rails和Sidekiq运行此worker:

class RunBuildWorker

  include Sidekiq::Worker

  sidekiq_options retry: false, backtrace: true

  def perform(file_name)
    IO.popen('runMyScript blah blah blah blah') do |io|
      File.open(FILE_MANAGER.configuration_directory + file_name, 'a') do |file|
        while (line = io.gets)
            file.write line
        end
      end
    end
  end

end
不幸的是,在该过程完成之前,它不会写入文件。在执行过程中,如何写入文件

更新:

下面是脚本当前的内容

COUNTER=0
while [ $COUNTER -le 5 ]                                                                                                                                    
do
    echo "The counter is $COUNTER"
    sleep 1
    COUNTER=$(( $COUNTER + 1 ))
done
我应该提到的是,这只是一个测试脚本,所以我可以尝试重定向输出,还有另一个脚本是由另一个团队编写的,我将在将来实际使用它。

怎么样

system("runMyScript blah blah blah blah > #{FILE_MANAGER.configuration_directory + file_name}")

这会将打印到标准输出的任何输出重定向到您的文件(重定向在控制台级别完成)。如果要附加到文件,只需将
>
替换为
>

,这似乎完成了我之前所做的工作。我原以为它会工作,但在输出文件上执行
tail-f
时,它只在脚本完成后才会出现。似乎您的脚本没有连续刷新打印。你能给我举一个“runMyScript”的小例子吗?问题应该在您的脚本中。感谢您迄今为止的帮助,我对使用bash文件相当陌生。哦!那确实管用!我只需要重新启动sidekiq程序。我猜它没有正确地拾取我的更改。