【问题标题】:Rails - PDFkit not working in productionRails - PDFkit 在生产中不工作
【发布时间】:2016-11-15 04:35:37
【问题描述】:

我正在使用 Apache2 和 Passenger 在 Ubuntu 服务器上部署我的 rails 应用程序。

到目前为止,除了一个问题外,一切都正常运行。

我的应用程序的一部分涉及从 html 网页生成 pdf。

我正在使用 pdfkit 来执行此操作。

gem 'pdfkit'
gem 'wkhtmltopdf-binary'

当我在本地主机上运行应用程序时,我找不到我遵循的安装和工作 pdf 工具包的说明。

但这是一个很好的例子:https://github.com/pdfkit/pdfkit

我遇到的问题是我相信 pdfkit 没有使用我的资产进行预编译。

application.rb 里面我有:

require 'pdfkit'
module RailsPdf
  class Application < Rails::Application
      config.middleware.use PDFKit::Middleware
  end
end

在我的config/initializers/assets.rb里面我有

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
}

我找不到我从哪里得到这个或它为什么在那里。但它给了我一个问题if request.env["REQUEST_PATH"].include? ".pdf"

在删除该代码之前,我根本无法加载我的应用程序索引页面。从那以后我在这里看到了一个例子:https://gist.github.com/francescognarra/9665736

并将上面的代码替换为以下代码:

PDFKit.configure do |config|
  config.root_url = "file://#{Rails.root.join('public')}/"
end

我现在可以启动应用程序并浏览我的所有页面。但是,我无法创建新的 pdf 或查看任何以前生成的 PDF。如果我尝试得到以下我不理解的错误日志。

有没有人在生产中使用带有 Rails 的 PDFkit 有丰富的经验? 并且可以帮助我确认我认为问题在于 PDFkit 没有正确预编译?

【问题讨论】:

    标签: ruby-on-rails pdf asset-pipeline pdfkit


    【解决方案1】:

    我找到了 assets.rb 中的原始代码的来源。

    我从这里得到代码:http://jguimont.com/post/2627758108/pdfkit-and-its-middleware-on-heroku

    我把它放在那里是因为 pdfkit 在尝试生成 pdf 时永远挂起的问题。

    此后我将其替换为的代码:

    PDFKit.configure do |config|
      config.root_url = "file://#{Rails.root.join('public')}/"
    end
    

    工作正常。

    我仍然不确定我发布的最后一张图片中的错误是什么。

    我尝试生成另一个 pdf 以再次查看错误并得到一个明确的错误:

    PDFKit::NoExecutableError (No wkhtmltopdf executable found at /usr/local/bin/wkhtmltopdf
    >> Please install wkhtmltopdf - https://github.com/pdfkit/PDFKit/wiki/Installing-WKHTMLTOPDF):
    

    我遵循了这些命令

    sudo add-apt-repository ppa:ecometrica/servers
    sudo apt-get update
    sudo apt-get install wkhtmltopdf
    

    但这并没有解决问题。所以我看到另一个帖子说要做gem install wkhtmltopdf-binary,这最终解决了这个问题。

    我仍然不确定为什么我必须运行该命令,即使我已将它设置为从我的 Gemfile 安装。

    我希望这对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 2017-08-26
      • 2017-04-14
      • 2012-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多