PDFkit rails3.1 и разработка env - PullRequest
       14

PDFkit rails3.1 и разработка env

3 голосов
/ 11 октября 2011

Мое приложение Rails 3.1 использует PDFkit для рендеринга определенных страниц, и я сталкиваюсь (как кажется) с общей проблемой, из-за которой попытка сгенерировать pdf вызывает зависание процесса.Я нашел это решение здесь на stackoverflow: rails 3 и PDFkit .Когда я добавляю запись config.threadsafe! в мой файл development.rb, и это работает НО , требуется, чтобы при каждом изменении в любом месте приложения мне приходилось останавливать и перезапускать свой сервер, чтобы увидеть мои изменения.НЕДОПУСТИМО из рабочего процесса - в настоящее время я настраиваю стили для страниц PDF, и это мучительно медленный процесс, требующий этого.

Я также обнаружил ту же проблему, о которой здесь сообщалось: https://github.com/jdpace/PDFKit/issues/110,и проблема указывает на этот обходной путь: http://jguimont.com/post/2627758108/pdfkit-and-its-middleware-on-heroku.

 ActionController::Base.asset_host = Proc.new { |source, request|
  if request.env["REQUEST_PATH"].include? ".pdf"
    "file://#{Rails.root.join('public')}"
  else
    "#{request.protocol}#{request.host_with_port}"
  end
}

Это устраняет необходимость перезапуска изменения, НО теперь, когда я загружаю pdf, это без отображаемых стилейиз конвейера активов, потому что он берет активы из публичного каталога.Я думаю, что я мог бы работать с этим решением, если бы я мог знать, как создавать таблицы стилей для шаблонов PDF в общей папке.Кто-нибудь разрабатывает с PDFKit и Rails3.1, где все это работает синхронно?

Любая помощь будет принята с благодарностью!Спасибо!Tony

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

Вот настройка, которую я использую:

  1. Я запускаю второй экземпляр сервера rails с rails server -p 3001 -e test, который будет обрабатывать мои ресурсы для PDF. Сервер будет распечатывать запросы активов по мере их поступления, поэтому я могу проверить, все ли работает как положено.

  2. Я использую следующий asset_host в моем config/environments/development файле:

    config.action_controller.asset_host = ->(source, request = nil){
      "http://localhost:3001" if request && request.env['REQUEST_PATH'].include?(".pdf")
    }
    
1 голос
/ 21 ноября 2012

Если вы используете Pow , вы можете использовать несколько рабочих.Добавьте это к ~ / .powconfig

export POW_WORKERS=3

(взято из Pow manual )

0 голосов
/ 23 февраля 2012

Существует проблема с pdfkit в Rails 3.1. Смотрите мой ответ на этот связанный вопрос:

pdfkit не обрабатывает pdfs

...