tutorial rails que ejemplos descargar curso caracteristicas ruby-on-rails-3

ruby-on-rails-3 - que - ruby on rails tutorial



PDFKit(wkhtmltopdf) Broken Pipe, OS X y Rails 3 (2)

Cambie /lib/pdfkit/pdfkit.rb:35 a lo siguiente y todo funciona como se espera (también con middleware).

args << ''--quit''

Estoy usando PDFKit (que usa wkhtmltopdf ) en un intento de representar una vista como pdf dentro de una aplicación de Rails 3.

PDFKit se reproduce con Errno::EPIPE (Broken pipe) apuntando a send_data(kit.to_pdf, :filename => "generated.pdf", :type => ''application/pdf'') en mi controlador show action:

# Controller def show respond_to do |format| format.html { render } format.pdf do html = render_to_string(:layout => false , :action => "show.html.haml") kit = PDFKit.new(html) send_data(kit.to_pdf, :filename => "invoice.pdf", :type => ''application/pdf'') return # to avoid double render call end end end # Gemfile ... gem ''pdfkit'' gem ''wkhtmltopdf'' ...

Sé que wkhtmltopdf no es la fuente de este error, ya que wkhtmltopdf public/404.html tmp/404.pdf desde Rails.root funciona como se esperaba.

Estoy usando un ejemplo de jonathanspies.com después de que el middleware falló de la misma manera.

# config/application.rb require ''pdfkit'' config.middleware.use PDFKit::Middleware

Después de probarlo en una nueva aplicación de Rails 3, recibo el siguiente error:

command failed: "~/.rvm/gems/ree-1.8.7-2011.01@blog/bin/wkhtmltopdf" "--page-size" "Letter" "--margin-right" "0.75in" "--margin-top" "0.75in" "--margin-bottom" "0.75in" "--encoding" "UTF-8" "--margin-left" "0.75in" "--quiet" "-" "-"

Al ejecutar el comando manualmente y se muestra la pantalla de uso, mirando la opción --quiet es fácil ver que se supone que es --quit

Cambie /lib/pdfkit/pdfkit.rb:35 a lo siguiente y todo funciona como se espera (también con middleware).

args << ''--quit''

Así que, una vez más, he resuelto mi problema en el momento de escribir la pregunta para obtener ayuda (siempre vale la pena incluir detalles). Envié una solicitud de extracción que corrige el error de ortografía (siempre un error tonto que pasa desapercibido). Espero que a nadie le importe que publique de todos modos.


En cuanto a cambiar el argumento silencioso para dejar de fumar.

Este cambio solo es válido si está utilizando la gema wkhtmltopdf que utiliza una versión muy antigua del binario wkhtmltopdf.

Con la gema wkhtmltopdf

10:32:15 wkhtml > wkhtmltopdf --version wkhtmltopdf 0.8.3 using wkhtmltopdf patched qt Copyright (C) 2008,2009 Jakob Truelsen, License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Jakob Truelsen Patches by Mário Silva and Emmanuel Bouthenot 10:32:16 wkhtml > wkhtmltopdf --help | grep quit -q, --quit Be less verbose. 10:32:16 wkhtml > wkhtmltopdf --help | grep quite 10:32:19 wkhtml >

Con el último binario que he instalado.

10:33:40 tmp > wkhtmltopdf --version Name: wkhtmltopdf 0.9.9 License: Copyright (C) 2008,2009 Wkhtmltopdf Authors. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Authors: Written by Jakob Truelsen. Patches by Mário Silva, Benoit Garret and Emmanuel Bouthenot. 10:33:50 tmp > wkhtmltopdf --help | grep quit 10:34:02 tmp > wkhtmltopdf --help | grep quiet -q, --quiet Be less verbose 10:34:07 tmp >

El error ortográfico existe en el antiguo binario que viene con la gema wkhtmltopdf. Le sugiero que instale el parche pdfkit con una inicialización o algo basado en si incluyó la gema wkhtmltopdf o no.

También aceptaría una solicitud de extracción que hizo que pdfkit conociera la versión de wkthtmltopdf con la que se estaba ejecutando y cambió condicionalmente ese argumento.