私は 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 を使用している場合、このフラグをどこに追加すればよいかわかりません。