[Ruby on Rails] PDFKit が NoMethodError (undefined method `chomp' for nil:NilClass): というエラーで動かない
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
以上です。