5

私はスタックオーバーフローで他の解決策を探して高低を見てきましたが、どれも適切な答えを持っていないようです。ですから、できるだけ具体的にしようと思います。

Ruby 2.0 および Rails 4 の Ruby on Rails アプリケーションで wicked_pdf (0.9.7) および wkhtmltopdf-binary (0.9.9.1) を使用しています。

リポジトリのクローンを作成してサーバーを起動すると、コードはローカルで実行されますが、本番環境 (4 ノード) にプッシュすると、時々動作します。

これは私たちが得ているエラーです:

INFO: ***************WICKED***************
Rendered application/index.pdf.haml within layouts/pdf (209.2ms)
Rendered application/_header.pdf.haml within layouts/pdf (1.5ms)
Completed 500 Internal Server Error in 3406ms
FATAL: RuntimeError(Failed to execute:\n"/opt/application/releases/5405db831e02eb2987cc06b243333776ce9c34b8ab6db3e58e93f39c3f933621/vendor/bundle/ruby/2.0.0/bin/wkhtmltopdf" -q  --header-html "file:////tmp/wicked_header_pdf20131031-15836-12qkok6.html" --footer-right "[page] of [topage]" --footer-font-size 9    --margin-top 50  --encoding "UTF-8"   "file:////tmp/wicked_pdf20131031-15836-b874ab.html" "/tmp/wicked_pdf_generated_file20131031-15836-1ibji4k.pdf" \nError: PDF could not be generated!\n Command Error: /usr/bin/env: ruby: No such file or directory\n)
 vendor/bundle/ruby/2.0.0/gems/wicked_pdf-0.9.7/lib/wicked_pdf.rb:69:in `rescue in pdf_from_string'
 vendor/bundle/ruby/2.0.0/gems/wicked_pdf-0.9.7/lib/wicked_pdf.rb:73:in `pdf_from_string'
 vendor/bundle/ruby/2.0.0/gems/wicked_pdf-0.9.7/lib/pdf_helper.rb:63:in `make_pdf'
 vendor/bundle/ruby/2.0.0/gems/wicked_pdf-0.9.7/lib/pdf_helper.rb:76:in `make_and_send_pdf'
 vendor/bundle/ruby/2.0.0/gems/wicked_pdf-0.9.7/lib/pdf_helper.rb:21:in `render_with_wicked_pdf'

アプリケーション内の関連コードは次のとおりです。

Gemfile

gem 'wicked_pdf', '~> 0.9.7'
gem 'wkhtmltopdf-binary', '~> 0.9.9'

Gemfile.lock

wicked_pdf (0.9.7)
  rails
wkhtmltopdf-binary (0.9.9.1)

controller.rb

def show
    render pdf: file_name,
          layout: 'pdf',
          margin: {
            top: 30
          },
          header: {
            html: {
              template: '_header.pdf.haml'
            }
          },
          footer: {
            right: I18n.t('pdf.page_description'),
            font_size: 9
          },
          encoding: 'UTF-8'
end
  • サーバー上で直接 bundle exec を使用して wkhtmltopdf を (正常に) 実行しましたが、ページにアクセスすると、約 3/4 の確率で 500 エラーが発生します。
  • また、Rails コンソールで実行して成功しました。
  • 基本的な wkhtmltopdf を使用して、Web ページから pdf を生成しました。
  • 現在、wicked_pdf が一時ファイルを書き込み、そこからファイルを生成しようとしているローカル ファイルから pdf を生成する作業を行っています。

任意の入力をいただければ幸いです。

4

2 に答える 2