2016-11-15 3 views
1

Im работает над развертыванием моего приложения rails на сервере Ubuntu с Apache2 и Passenger.Rails - PDFkit не работает в производстве

До сих пор все работает бесперебойно, за исключением одной проблемы.

Часть моего приложения включает в себя создание PDF-файлов с веб-страниц html.

Im using pdfkit для этого.

gem 'pdfkit' 
gem 'wkhtmltopdf-binary' 

Я не мог найти инструкции я следовал за получение Kit PDF и работать, когда я запустить приложение на моем локальном хосте.

Но это хороший пример: https://github.com/pdfkit/pdfkit

вопрос Im имея, я считаю, pdfkit не получает прекомпилирован с моими активами.

Внутри application.rb я есть:

require 'pdfkit' 
module RailsPdf 
    class Application < Rails::Application 
     config.middleware.use PDFKit::Middleware 
    end 
end 

Внутри моего config/initializers/assets.rb я имел

ActionController::Base.asset_host = Proc.new { |source, request| 
    if request.env["REQUEST_PATH"].include? ".pdf" 
    "file://#{Rails.root.join('public')}" 
    else 
    "#{request.protocol}#{request.host_with_port}" 
    end 
} 

Я не мог найти, где я получил от этого и почему именно там. Но это дает мне вопрос на линии if request.env["REQUEST_PATH"].include? ".pdf" enter image description here

Я не мог получить мой индекс страницы приложения для загрузки на всех, пока я не избавился от этого кода. С тех пор я видел пример здесь: https://gist.github.com/francescognarra/9665736

И заменить приведенный выше код со следующим:

PDFKit.configure do |config| 
    config.root_url = "file://#{Rails.root.join('public')}/" 
end 

теперь я могу запустить приложение и просматривать все мои страницы. Но я не могу создать новый pdf или просмотреть ранее созданные. Если я попытаюсь получить следующий журнал ошибок, который я не понимаю.

enter image description here

Кто-нибудь есть большой опыт, используя PDFkit с рельсов в производстве? И может помочь подтвердить мое убеждение, что проблема заключается в том, что PDFkit не получается предварительно скомпилировать?

ответ

1

Я нашел, откуда исходил исходный код внутри assets.rb.

Я получил код здесь: http://jguimont.com/post/2627758108/pdfkit-and-its-middleware-on-heroku

Я положил его там из-за проблем с pdfkit висит навсегда при попытке сгенерировать PDF.

код С тех пор я заменил его:

PDFKit.configure do |config| 
    config.root_url = "file://#{Rails.root.join('public')}/" 
end 

Работает просто отлично.

Я все еще не уверен, что эта ошибка была на последней картинке, которую я опубликовал.

Я попытался создать другой PDF, чтобы увидеть ошибку снова и получил четкую ошибку в:

PDFKit::NoExecutableError (No wkhtmltopdf executable found at /usr/local/bin/wkhtmltopdf 
>> Please install wkhtmltopdf - https://github.com/pdfkit/PDFKit/wiki/Installing-WKHTMLTOPDF): 

Я последовал за эти команды

sudo add-apt-repository ppa:ecometrica/servers 
sudo apt-get update 
sudo apt-get install wkhtmltopdf 

Но это не решило проблему. Поэтому я увидел еще одну запись, в которой говорилось, что это gem install wkhtmltopdf-binary, что и в конечном итоге решило проблему.

Я все еще не знаю, почему мне пришлось запускать эту команду, даже если у меня она установлена ​​для установки из моего Gemfile.

Я надеюсь, что это поможет кому-то еще.

Смежные вопросы