在Heroku上使用PDFKit生成文件 - 没有这样的文件或目录

时间:2013-03-27 15:29:07

标签: ruby-on-rails heroku resque pdfkit cedar

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

1 个答案:

答案 0 :(得分:2)

看起来像我发布的第二个建议的错误的解决方案是忽略加载错误。我是这样做的:

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

起初我没有看到这个警告,因为Resque只是向我显示了最后的错误。谢谢@ctshryock,你的问题让我更多地考虑了这个错误来自何处。