2011-10-11 4 views
6

J'utilise Ubuntu 11.04 pour développer une application dans Ruby on Rails. Dans l'application, je dois générer des documents PDF. J'utilise donc les gemmes wicked_pdf et wkhtmltopdf-binary.wkhtmltopdf RuntimeError (Lieu inconnu wkhtmltopdf)

Dans l'environnement de développement dans mon système tout fonctionne très bien. Mais une fois que je déployé l'application en production sur CentOS 5.6 à l'aide des passagers Phusion , lorsque je tente de générer pdfs à la volée son me donner l'erreur suivante:

RuntimeError (Lieu de wkhtmltopdf inconnu)

J'utilise Ruby1.9.2.p136 Rails 3.1.1

Toute aide sera très appréciée .... Merci.

Répondre

9

utilisez-vous le binaire statique wkhtmltopdf? Je l'ai téléchargé here et extraced à /path/to/rails_app/bin

et l'ajouter à des rails comme celui-ci:

#config/initializers/wicked_pdf.rb 
WickedPdf.config = { 
    :exe_path => Rails.root.join('bin', 'wkhtmltopdf-i386').to_s, 
} 
+0

Changé de i386 à amd64 et cela a fonctionné pour Heroku aussi bien. –

8

pour mac os - x vous devez installer wkhtmltopdf par homebrew

$ brew tap homebrew/boneyard # the wkhtmltopdf formula is now inactive but still available in the boneyard repository 
$ brew install wkhtmltopdf 
+0

Il est pas disponible plus: 'Erreur: Pas de formule disponible pour wkhtmltopdf' –

+0

essayer à nouveau, mais d'abord installer ossuaire: brasser $ robinet homebrew/ossuaire la bière formular wkhtmltopdf est inactif, mais toujours disponible sous le repo ossuaire – Hannes

10

Une alternative est de installez le binaire via le Gemfile.

il suffit d'ajouter la ligne suivante à elle:

gem 'wkhtmltopdf-binary' 

Cela devrait ajouter le support binaire pour linux-i386, AMD64 et darwin.

4

Solution pour OS X Yosemite

Pour le faire fonctionner sur Mac OS X 10.10 (Yosemite), installez la gemme wkhtmltopdf-binary puis le mettre dans votre 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 .: Cette solution fonctionnera aussi sur Linux.

+1

Great! Cela a fonctionné pour moi. Avez-vous une idée de pourquoi cela est maintenant nécessaire? – nathanvda

+0

@nathanvda Je n'en ai aucune idée. Mais j'aimerais savoir aussi. –

+0

Pour mac osx, de la même façon que @ben l'a remarqué, il vous suffit de définir le chemin où votre fichier binaire est placé et de mettre le bon nom, par exemple: Rails.root.join ('/ usr/local/bin', 'wkhtmltopdf ') .to_s, – yozzz

0

Juste eu un problème similaire.

Comme indiqué dans readme, je créé un initialiseur avec:

WickedPdf.config = { 
    exe_path: '/usr/local/bin/wkhtmltopdf' 
} 
0

MAC OSX:

brew install wkhtmltopdf 

cela vous permettra d'installer

brew install Caskroom/cask/wkhtmltopdf 

puis à config/initializers/wicked_pdf.rb

WickedPdf.config = { 
    exe_path: '/usr/local/bin/wkhtmltopdf' 
} 
Questions connexes