2

wkhtmltopdfで PDF を生成するためにPDFKit Gemを実行しています。

私のプロジェクトでスペックを実行したり PDF を生成したりすると、wkhtmtopdf はその出力をstdout/ 別のログにリークしますが、すべての出力をアプリケーションの別のログファイル pdfkit.log に生成したいと考えています。

wkhtmltopdf の呼び出しは簡単です

result = IO.popen(invoke, "wb+") do |pdf|
  pdf.puts(@source.to_s) if @source.html?
  pdf.close_write
  pdf.gets(nil)
end

IO.popen > Kernel.spawn documentation に従って、IO.popenすべての出力をログファイルに入れるように呼び出しを再構成しようとしました(:err => [:child, :out]マージstderrしてstdout:out=>[File.join(Rails.root, 'log', 'pdfkit.log'), "w"]指定されたログファイルに書き込む必要があります)

result = IO.popen(invoke, "wb+", :out=>[File.join(Rails.root, 'log', 'pdfkit.log'), "w"], :err=>[:child, :out]) do |pdf|
  pdf.puts(@source.to_s) if @source.html?
  pdf.close_write
  pdf.gets(nil)
end

メソッドの上書きは行われていますが、残念ながら期待どおりに動作しません。エラーが のオプションを誤解していることはわかっていますがIO.popen、方法がわかりません..

4

2 に答える 2

0
$stdout.reopen("out.txt", "w")
$stderr.reopen("err.txt", "w")
于 2012-08-30T10:02:10.143 に答える