【发布时间】: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