3

我的 Rails 3.1 应用程序正在使用 PDFkit 呈现特定页面,我遇到了(看起来像)一个常见问题,即尝试生成 pdf 导致进程挂起。我在 stackoverflow 上找到了这个解决方案:rails 3 and PDFkitconfig.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 开发,这一切都在同步工作?

任何帮助将不胜感激!谢谢!托尼

4

3 回答 3

2

这是我正在使用的设置:

  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")
    }
    
于 2011-11-22T22:31:00.117 回答
1

如果您使用Pow,则可以使用多个工人。将此添加到您的 ~/.powconfig

export POW_WORKERS=3

(取自Pow 手册

于 2012-11-21T10:03:38.057 回答
0

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

pdfkit 不设置 pdf 样式

于 2012-02-22T21:13:18.060 回答