2016-11-15 76 views
1

我正在使用Apache2和Passenger在Ubuntu服務器上部署Rails應用程序。Rails - PDFkit在生產中不起作用

到目前爲止,除了一個問題外,一切都運轉良好。

我的應用程序的一部分涉及到從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" enter image description here

我無法讓我的應用程序索引頁面加載,直到我擺脫了該代碼。我後來看到一個例子在這裏:https://gist.github.com/francescognarra/9665736

,取而代之的是下面的,上面的代碼:

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

我現在就可以啓動應用程序和瀏覽我的所有網頁。但是,我無法創建新的pdf或查看以前生成的任何pdf。如果我嘗試找到我不明白的以下錯誤日誌。

enter image description here

沒有人有使用PDFkit在生產鋼軌一些有實力的經驗嗎? 並且可以幫助確認我相信問題在於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安裝。

我希望這可以幫助別人。