5

Estoy utilizando wicked_pdf exitosamente con SASS en desarrollo. Estoy incluyendo un único archivo .scss, que contiene varias reglas para import otros archivos .sass y .scss, a través de esta ayuda:wicked_pdf + canalización de activos de rieles + importación sass en producción

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 el cambio a la producción de la aplicación aún busca los archivos importados que no se encuentran.

he añadido a continuación un segundo archivo de manifiesto que ser pre-compilados en production.rb (config.assets.precompile += %w(pdf.css)) que contiene una sola regla require para recoger el .scss archivo 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 solucionar esto? La creación de PDF requiere rutas absolutas, lo que hace que esta tarea sea un poco más difícil.

Respuesta

8

He malvado pdf trabajando en desarrollo y producción. Este es el núcleo de mi config wicked_pdf:

He actualizado WickedPdfHelper (cargado de inicializadores/wicked_pdf.rb) basado en un wicked_pdf pull request de usuario antti github

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 

después en app/activos/hojas de estilo /pdf.css requiero unos hojas de estilo Sass:

/* ... 
*= require ./_colors 
*= require_directory ./pdf 
*= require_self 
*/ 

(recuerde que si usted está modificando inicializadores o nada en config /, tendrá que volver a iniciar su aplicación rieles para tirar de los cambios)

Cuestiones relacionadas