【问题标题】:PDFkit rails3.1 and development envPDFkit rails3.1 和开发环境
【发布时间】:2011-12-05 01:54:41
【问题描述】:

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

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

【问题讨论】:

  • 顺便说一句,“else”部分是不需要的;只需返回nil(如我的回答)

标签: ruby-on-rails-3.1 pdfkit


【解决方案1】:

这是我正在使用的设置:

  1. 我使用rails server -p 3001 -e test 运行第二个rails 服务器实例,它将处理我的PDF 资产。服务器将在资产请求进入时打印它们,因此我可以检查一切是否按预期工作。

  2. 我在config/environments/development 文件中使用以下asset_host

    config.action_controller.asset_host = ->(source, request = nil){
      "http://localhost:3001" if request && request.env['REQUEST_PATH'].include?(".pdf")
    }
    

【讨论】:

    【解决方案2】:

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

    export POW_WORKERS=3
    

    (取自Pow manual

    【讨论】:

      【解决方案3】:

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

      pdfkit does not style pdfs

      【讨论】:

        猜你喜欢
        • 2018-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-18
        • 2014-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多