5

Sto utilizzando con successo wicked_pdf con SASS in fase di sviluppo. Sto tra cui un singolo .scss file, che contiene diverse import regole per altri file .sass e .scss, tramite questo helper:wicked_pdf + pipeline di asset di rails + sass import in produzione

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 

Ma il passaggio alla produzione l'applicazione sembra ancora per i file importati che non si trovano.

Ho aggiunto poi un secondo file manifesto per essere pre-compilati in production.rb (config.assets.precompile += %w(pdf.css)), che contiene una singola require regola per prendere il .scss file menzionato. Questo file viene compilato bene ma sembra che l'assistente non preleva il file giusto nella produzione e sembra ancora per caricare i file importati .sass.

Qualcuno ha esperienza come risolvere questo? La creazione di PDF richiede percorsi assoluti, il che rende questo compito un po 'più difficile.

risposta

8

Ho un pessimo pdf che funziona nello sviluppo e nella produzione. Questo è il cuore del mio wicked_pdf config:

Ho aggiornato WickedPdfHelper (caricato dal inizializzatori/wicked_pdf.rb) sulla base di una wicked_pdf pull request da github Antti utente

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 

poi in app/attività/fogli di stile /pdf.css ho bisogno di un paio di fogli di stile Sass:

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

(ricordate che se si sta modificando inizializzatori o nulla in config /, è necessario riavviare il rotaie app per tirare le modifiche)