PDFkit rails3.1和开发环境

时间:2011-10-11 07:28:33

标签: ruby-on-rails-3.1 pdfkit

My Rails 3.1应用程序正在使用PDFkit呈现特定页面,而我遇到(似乎是)一个常见问题,尝试生成pdf导致进程挂起。 我在stackoverflow上找到了这个解决方案:rails 3 and PDFkit。我在我的development.rb文件中添加了config.threadsafe!条目并且 BUT ,它要求对于应用中的任何位置的每次更改,我都必须停止并重新启动服务器以查看我的更改。从工作流程中无法接受 - 我目前正在为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进行开发,这些都是同步的?

任何帮助将不胜感激! 谢谢! 贝

3 个答案:

答案 0 :(得分:2)

以下是我正在使用的设置:

  1. 我使用rails server -p 3001 -e test运行第二个rails服务器实例,它将处理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 :(得分:1)

如果您使用Pow,则可以使用多个工作人员。将其添加到〜/ .powconfig

export POW_WORKERS=3

(摘自Pow manual

答案 2 :(得分:0)

Rails 3.1中的pdfkit存在问题。请参阅我对此相关问题的回答:

pdfkit does not style pdfs