wicked_pdf + конвейер активов рельса + ​​импорт sass в производство - PullRequest
5 голосов
/ 07 октября 2011

Я успешно использую wicked_pdf с SASS в разработке. Я включаю один файл .scss, который содержит несколько правил import для других файлов .sass и .scss через этого помощника:

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

Но при переходе в рабочий режим приложение все еще ищет импортированные файлы, которые не найдены.

Затем я добавил второй файл манифеста для предварительной компиляции в production.rb (config.assets.precompile += %w(pdf.css)), который содержит единственное правило require для выбора упомянутого файла .scss. Этот файл скомпилирован просто отлично, но кажется, что помощник не подхватывает нужный файл в производственном процессе и все еще пытается загрузить импортированные .sass файлы.

У кого-нибудь есть опыт, как это решить? Создание PDF требует абсолютных путей, что немного усложняет эту задачу.

Ответы [ 2 ]

8 голосов
/ 04 января 2012

Я злой PDF, работающий в разработке и производстве. Это ядро ​​моей конфигурации wicked_pdf:

Я обновил WickedPdfHelper (загруженный из инициализаторов / wicked_pdf.rb) на основе wicked_pdf запроса на получение от пользователя github 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

затем в app / assets / stylesheets / pdf.css мне нужно несколько sass таблиц стилей:

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

(помните, что если вы изменяете инициализаторы или что-то в config /, вам нужно перезапустить приложение rails, чтобы внести изменения)

2 голосов
/ 14 февраля 2012

Я написал статью об этом по адресу: http://anlek.com/2011/09/wicked_pdf-working-in-rails-3-1/

Это очень похоже на решение Филиппа с несколькими модификациями.

...