2016-11-15 9 views
1

Ich arbeite an der Bereitstellung meiner Rails-Anwendung auf einem Ubuntu-Server mit Apache2 und Passenger.Rails - PDFKit funktioniert nicht in der Produktion

Bis auf ein Problem läuft alles reibungslos.

Teil meiner App umfasst die Erstellung von PDF-Dateien von HTML-Webseiten.

Ich benutze pdfkit, um dies zu tun.

gem 'pdfkit' 
gem 'wkhtmltopdf-binary' 

Ich konnte nicht die Anweisungen finde ich für immer pdf-Kit nachgegangen und arbeiten, wenn ich die Anwendung auf meinem localhost ausgeführt wurde.

Aber dies ist ein gutes Beispiel: https://github.com/pdfkit/pdfkit

Das Problem Im mit, das ich glaube, ist PDFKit nicht mit meinem Vermögen vorkompilierte bekommen.

Innen application.rb ich habe:

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

In meinem config/initializers/assets.rb ich

hatte
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 
} 

ich nicht finden konnte, wo ich das von bekam oder warum es da ist. Aber es gab mir ein Problem auf der Linie if request.env["REQUEST_PATH"].include? ".pdf" enter image description here

Ich konnte nicht meine Anwendung Indexseite bekommen überhaupt zu laden, bis ich dieses Codes losgeworden. Ich habe ein Beispiel, da hier zu sehen: https://gist.github.com/francescognarra/9665736

und ersetzt den obigen Code mit dem folgenden:

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

Ich kann jetzt die Anwendung starten und durchsuchen alle meine Seiten. Ich kann jedoch keine neue PDF erstellen oder zuvor erstellte PDFs anzeigen. Wenn ich versuche, bekomme ich das folgende Fehlerprotokoll, das ich nicht verstehe.

enter image description here

Hat jemand eine große Erfahrung mit Schienen in der Produktion PDFKit? Und kann mir helfen zu bestätigen, dass PDFKit nicht korrekt vorkompiliert wird?

Antwort

1

Ich habe gefunden, woher mein ursprünglicher Code in Assets.rb kam.

bekam ich den Code von hier: http://jguimont.com/post/2627758108/pdfkit-and-its-middleware-on-heroku

ich es aufgrund eines Problems dort setzen immer mit PDFKit hängen, wenn ein PDF zu erzeugen versuchen.

Der Code, den ich seit ersetzt haben es mit:

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

Funktioniert gut.

Ich bin immer noch nicht sicher, was dieser Fehler in dem letzten Bild, das ich gepostet habe, war.

ich versucht, einen anderen pdf zu erzeugen, um den Fehler wieder und bekam einen klaren Fehler zu sehen:

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

Ich folgte diese Befehle

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

Aber das löste nicht das Problem. So sah ich einen anderen Beitrag, der gesagt wurde, gem install wkhtmltopdf-binary zu tun, was schließlich das Problem löste.

Ich bin immer noch nicht sicher, warum ich diesen Befehl ausführen musste, auch wenn ich es aus meiner Gemfile installieren installiert habe.

Ich hoffe, das hilft jemand anderem.

Verwandte Themen