我正在使用 PDFKit 从 Heroku Cedar 上的 Resque 作业中的给定 url 创建 pdf。我的代码如下所示:
kit = PDFKit.new(url)
pdf = kit.to_file("/tmp/#{SecureRandom.hex}.pdf")
然后我使用雾将文件上传到 S3 以进行永久存储。这项工作通常有效,但也可能有三分之一的时间失败:
No such file or directory - /tmp/a05c165fc80878b75fd15c447695de71.pdf
在控制台中手动运行代码将产生相同的错误。
根据 Heroku 文档,我应该能够在 Cedar 上的应用程序目录中的任何位置编写一个临时文件。我尝试过首先创建 tmp 目录(在控制台中),但这似乎并没有改变任何东西。也没有保存到“#{Rails.root}/tmp/#{SecureRandom.hex}.pdf”。
任何想法将不胜感激。
更新
控制台中的完整错误是:
Error: Failed loading page http://grist.org/living/you-look-great-in-green-clothing-industry-gets-a-makeover-maybe.html
(sometimes it will work just to ignore this error with --load-error-handling ignore)
Errno::ENOENT: No such file or directory - /tmp/55a1d418074736decfd4e123d8e2bba2.pdf
似乎这可能是来自 wkhtmltopdf 的错误,但是,如果我通过 PDFkit 使用 wkhtmltopdf,我不确定在哪里添加此标志。