1

我正在使用 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,我不确定在哪里添加此标志。

4

1 回答 1

2

看起来解决方案,正如我第二次发布的错误所建议的那样,是忽略加载错误。我这样做了:

PDFKit.configure do |config|
  config.default_options[:load_error_handling] = 'ignore'
end

起初我没有看到这个警告,因为 Resque 只显示了最后一个错误。谢谢@ctshryock,你的问题让我对这个错误的确切来源有了更多的思考。

于 2013-03-27T19:05:48.877 回答