1

私は PDFKit を使用して、Heroku Cedar の Resque ジョブ内で特定の URL から PDF を作成しています。私のコードは次のようになります:

kit = PDFKit.new(url)
pdf = kit.to_file("/tmp/#{SecureRandom.hex}.pdf")

次に、fog を使用してファイルを S3 にアップロードし、永続的に保存します。このジョブは通常は機能しますが、おそらく 3 分の 1 の確率で失敗します。

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

2番目に投稿したエラーが示唆したように、解決策のように見えますが、ロードエラーを無視することでした。私はこれをしました:

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

Resque は最終的なエラーのみを表示していたため、最初はこの警告は表示されませんでした。@ctshryock に感謝します。あなたの質問により、このエラーの正確な原因についてもう少し考えさせられました。

于 2013-03-27T19:05:48.877 に答える