2011-10-11 22 views
6

Estoy usando Ubuntu 11.04 para desarrollar una aplicación en Ruby on Rails. En la aplicación, necesito generar documentos en PDF. Así que estoy usando las gemas wicked_pdf y wkhtmltopdf-binary.wkhtmltopdf RuntimeError (Ubicación desconocida de wkhtmltopdf)

En el entorno de desarrollo de mi sistema, todo funciona bien. Pero una vez que desplegó la aplicación en la producción en CentOS 5.6 utilizando Phusion de pasajeros, cuando intento para generar archivos PDF sobre la marcha me facilita el siguiente error:

RuntimeError (Localización de wkhtmltopdf desconocido)

Estoy utilizando Ruby1.9.2.p136 Rails 3.1.1

Cualquier ayuda será muy apreciada .... Gracias.

Respuesta

9

¿usas static wkhtmltopdf binary? he descargado here y extraced a /path/to/rails_app/bin

y añadirlo a los carriles de esta manera:

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

Cambió de i386 a amd64 y esto también funcionó para Heroku. –

8

para el sistema operativo Mac - x debe instalar wkhtmltopdf por homebrew

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

No es lo habrá mas: 'Error: No hay una fórmula disponible para wkhtmltopdf' –

+0

inténtelo de nuevo pero primero instalar cementerio: $ cerveza del grifo homebrew/boneyard la wkhtmltopdf formular cerveza está inactivo, pero todavía está disponible bajo la repo boneyard – Hannes

10

Una alternativa es instala el binario a través del Gemfile.

Simplemente añadir la siguiente línea a la misma:

gem 'wkhtmltopdf-binary' 

Eso debería añadir soporte binario para Linux-i386, AMD64 y Darwin.

4

Solución para OS X Yosemite

para que funcione en Mac OS X 10.10 (Yosemite), instalar la gema wkhtmltopdf-binary y luego ponerlo en su 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 

Obs .: Esta solución también funcionará en Linux.

+1

Gran! Esto funcionó para mí. ¿Tienes alguna idea de por qué ahora esto es necesario? – nathanvda

+0

@nathanvda No tengo idea. Pero me gustaría saberlo también. –

+0

Para mac osx, del mismo modo que @ben se dio cuenta, solo debe establecer la ruta donde se coloca su archivo binario, y también poner el nombre correcto, por ejemplo: Rails.root.join ('/ usr/local/bin', 'wkhtmltopdf ') .to_s, – yozzz

0

Acabo de tener un problema similar.

Como se indica en readme, he creado un inicializador con:

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

MAC OSX:

brew install wkhtmltopdf 

Esto le permitirá instalar

brew install Caskroom/cask/wkhtmltopdf 

después en config/initializers/wicked_pdf.rb

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