[Ruby on Rails] PDFKit が NoMethodError (undefined method `chomp' for nil:NilClass): というエラーで動かない

Tadashi Shigeoka ·  Thu, March 28, 2013

Ruby on Rails で PDFKit を使ってまして、CentOS で動かないという状況に陥りました。

NoMethodError (undefined method `chomp' for nil:NilClass):
  pdfkit (0.5.3) lib/pdfkit/configuration.rb:20:in `wkhtmltopdf'
  pdfkit (0.5.3) lib/pdfkit/pdfkit.rb:31:in `initialize'
  pdfkit (0.5.3) lib/pdfkit/middleware.rb:21:in `new'
  pdfkit (0.5.3) lib/pdfkit/middleware.rb:21:in `call'
  warden (1.2.1) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.1) lib/warden/manager.rb:34:in `catch'
  warden (1.2.1) lib/warden/manager.rb:34:in `call'
  actionpack (3.2.13) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'

下記を参考に直してみても、RuntimeError pdfkit (0.5.3) lib/pdfkit/pdfkit.rb:73:in `to_pdf’ というエラーが出る。

NoMethodError · Issue #82 · pdfkit/pdfkit

原因は2つあって、1つ目はApacheにBasic認証を設定していたこと。

2つ目は /usr/local/bin へ path を通すことで解決しました。

path を通す方法は下記のとおりです。

まず、 /usr/local/bin/ruby_wrapper に下記の内容を記載して保存します。

#!/bin/sh
export PATH="$PATH:/usr/local/bin" 
exec "/usr/local/bin/ruby" "$@" 

次に、Apache の httpd.conf で Passenger で使う Ruby の Path を ruby_wrapper に変更します。

PassengerRuby /usr/local/bin/ruby_wrapper

以上です。