【问题标题】:Writing Ruby Console Output to Text File将 Ruby 控制台输出写入文本文件
【发布时间】:2012-02-01 22:59:33
【问题描述】:

我正在尝试运行一个 Ruby 应用程序,它将信息输出到控制台。我想让这个输出保存到文本/日志文件中。 这甚至可能吗? ruby 必须有一个 flag 才能做到这一点?

【问题讨论】:

  • 您想在 Ruby 应用程序中执行此操作,还是在运行 Ruby 应用程序的终端中执行此操作?

标签: ruby-on-rails ruby terminal gem


【解决方案1】:

使用shell redirections:

ruby script.rb > out.txt
rails server > out.txt

另外,你也可以重定向 $stdout, $stderr:

$stdout = File.new('/path/to/out.txt', 'w')

http://eddymulyono.livejournal.com/65791.html

【讨论】:

  • 这确实有效,但只有在脚本被执行之后。我想看到它发生时的输出(因为这个 txt 文件正在加载到网页中以查看控制台)
  • 我是 ruby​​ 的菜鸟,脚本使用 puts 输出它的数据。更改标准输出将如何改变 puts 的位置?对此感到抱歉。
  • 刚刚查看了您的链接,但似乎没有指定这些文件。
  • @nickw444 因为 puts 写入到标准输出。
  • script -c "rails runner -e development lib/scripts/my_script.rb" report.txt 帮助我轻松地将 Rails 运行器脚本的非常长的输出捕获到文件中。我尝试使用重定向到一个文件,但它只写在脚本的末尾。这对我没有帮助,因为我的脚本中几乎没有交互式命令。然后我只使用了script,然后在脚本会话中运行rails runner,但它并没有写下所有内容。然后我找到了这个script -c "runner command here" output_file,它根据需要保存了所有输出。这是在 Ubuntu 14.04 LTS 上