Rails: wkhtmltopdf RuntimeError (расположение wkhtmltopdf неизвестно)

Я использую Ubuntu 11.04 для разработки приложения на Ruby on Rails. В приложении мне нужно создавать документы в формате PDF. Поэтому я использую бинарные драгоценные камни wicked_pdf и wkhtmltopdf.

В среде разработки в моей системе все работает нормально. Но как только я развернул приложение в рабочей среде CentOS 5.6 с помощью Phusion Passenger, когда я пытаюсь создать PDF-файлы на лету, это дает мне следующую ошибку:

RuntimeError (Расположение wkhtmltopdf неизвестно)

Я использую Ruby1.9.2.p136 Rails 3.1.1.

Любая помощь будет высоко оценена .... Спасибо.


person dbaruah    schedule 11.10.2011    source источник


Ответы (6)


вы используете статический двоичный файл wkhtmltopdf? я скачал его здесь и распаковал в /path/to/rails_app/bin

и добавьте его в рельсы следующим образом:

#config/initializers/wicked_pdf.rb
WickedPdf.config = {
  :exe_path => Rails.root.join('bin', 'wkhtmltopdf-i386').to_s,
}
person ben    schedule 11.10.2011
comment
Изменен с i386 на amd64, и это сработало и для Heroku. - person Lee Quarella; 25.10.2011

Альтернативой является установка бинарника через Gemfile.

Просто добавьте следующую строку в вашу производственную группу:

gem 'wkhtmltopdf-binary'

Это должно добавить бинарную поддержку для linux-i386, amd64 и darwin.

А потом беги

bundle install --without development test

для установки драгоценного камня в производственной среде. После чего вы просто перезагружаете свой сервер.

Это все.

Надеюсь, это поможет

person Skully    schedule 27.12.2013

для mac os - x вы должны установить wkhtmltopdf с помощью homebrew

$ brew tap homebrew/boneyard # the wkhtmltopdf formula is now inactive but still available in the boneyard repository 
$ brew install wkhtmltopdf
person Hannes    schedule 30.08.2012
comment
Это больше не доступно: Error: No available formula for wkhtmltopdf - person Lucas Caton; 27.10.2014
comment
попробуйте еще раз, но сначала установите Boneyard: - person Hannes; 27.10.2014

Решение для OS X Yosemite

Чтобы заставить его работать на Mac OS X 10.10 (Yosemite), установите гем wkhtmltopdf-binary, а затем поместите его в свой config/initializers/wicked_pdf.rb:

module WickedPdfHelper
  if Rails.env.development?
    if RbConfig::CONFIG['host_os'] =~ /linux/
      executable = RbConfig::CONFIG['host_cpu'] == 'x86_64' ? 'wkhtmltopdf_linux_x64' : 'wkhtmltopdf_linux_386'
    elsif RbConfig::CONFIG['host_os'] =~ /darwin/
      executable = 'wkhtmltopdf_darwin_386'
    else
      raise 'Invalid platform. Must be running linux or intel-based Mac OS.'
    end

    WickedPdf.config = { exe_path: "#{Gem.bin_path('wkhtmltopdf-binary').match(/(.+)\/.+/).captures.first}/#{executable}" }
  end
end

Ps: это решение будет работать и в Linux.

person Lucas Caton    schedule 27.10.2014
comment
Здорово! Это сработало для меня. Вы хоть понимаете, зачем это сейчас нужно? - person nathanvda; 30.10.2014
comment
@nathanvda понятия не имею. Но я тоже хотел бы знать. - person Lucas Caton; 02.11.2014
comment
Для mac osx так же, как заметил @ben, просто вы должны указать путь, по которому находится ваш двоичный файл, а также указать правильное имя, например: Rails.root.join('/usr/local/bin', 'wkhtmltopdf' ).to_s, - person yozzz; 03.06.2015

MAC OSX:

brew install wkhtmltopdf

это позволит вам установить

brew install Caskroom/cask/wkhtmltopdf

затем в config/initializers/wicked_pdf.rb

WickedPdf.config = {
  exe_path: '/usr/local/bin/wkhtmltopdf'
}
person Sohair Ahmad    schedule 10.02.2017

Только что была аналогичная проблема.

Как указано в readme, я создал инициализатор с помощью:

WickedPdf.config = {
  exe_path: '/usr/local/bin/wkhtmltopdf'
}
person Magnuss    schedule 16.09.2015