ruby-on-rails-3.1 - wicked_pdf_image_tag - wicked pdf example
La tubería de activos de wicked_pdf+rails+sass importa en producción (2)
Estoy utilizando wicked_pdf exitosamente con SASS en desarrollo. .scss
archivo .scss
único, que contiene varias reglas de import
para otros archivos .sass
y .scss
, a través de este asistente:
def wicked_pdf_stylesheet_link_tag(*sources)
sources.collect { |source|
"<style type=''text/css''>#{Rails.application.assets.find_asset("#{source}.css").body}</style>"
}.join("/n").gsub(/url/([''"](.+)[''"]/)(.+)/,%[url("#{wicked_pdf_image_location("//1")}")//2]).html_safe
end
Pero al cambiar a producción, la aplicación aún busca los archivos importados que no se encuentran.
He agregado un segundo archivo de manifiesto para ser precompilado en production.rb ( config.assets.precompile += %w(pdf.css)
) que contiene una regla de .scss
única para recoger el archivo .scss
mencionado. Este archivo está compilado muy bien, pero parece que el ayudante no recoge el archivo correcto en producción y aún busca cargar los archivos .sass
importados.
¿Alguien ha experimentado cómo resolver esto? La creación de PDF requiere rutas absolutas, lo que hace que esta tarea sea un poco más difícil.
Tengo un pdf perverso trabajando en desarrollo y producción. Este es el núcleo de mi configuración wicked_pdf:
He actualizado WickedPdfHelper (cargado desde initializers / wicked_pdf.rb) basado en una solicitud de extracción wicked_pdf de github user antti
module WickedPdfHelper
def wicked_pdf_stylesheet_link_tag(*sources)
sources.collect { |source|
"<style type=''text/css''>#{Rails.application.assets.find_asset(source+".css")}</style>"
}.join("/n").html_safe
end
def wicked_pdf_image_tag(img, options={})
asset = Rails.application.assets.find_asset(img)
image_tag "file://#{asset.pathname.to_s}", options
end
def wicked_pdf_javascript_src_tag(jsfile, options={})
asset = Rails.application.assets.find_asset(jsfile)
javascript_include_tag "file://#{asset.pathname.to_s}", options
end
def wicked_pdf_javascript_include_tag(*sources)
sources.collect{ |source| "<script type=''text/javascript''>#{Rails.application.assets.find_asset(source+".js")}</script>" }.join("/n").html_safe
end
end
luego en app / assets / stylesheets / pdf.css Necesito algunas hojas de estilo sass:
/* ...
*= require ./_colors
*= require_directory ./pdf
*= require_self
*/
(recuerde que si está modificando inicializadores o cualquier cosa en config /, tendrá que reiniciar su aplicación de rieles para incorporar los cambios)
Escribí un artículo sobre esto en: http://anlek.com/2011/09/wicked_pdf-working-in-rails-3-1/
Es muy similar a la solución de Philip con algunas modificaciones.