2011-10-11 77 views
3

我的Rails 3.1應用程序正在使用PDFkit來呈現特定的頁面,並且我正在運行(看起來像)一個常見問題,嘗試生成pdf導致進程掛起。 我在這裏找到了這個解決方案在計算器上:rails 3 and PDFkit。如果我在我的development.rb文件中添加config.threadsafe!條目並且此作品爲但是它要求對於應用程序中任何位置的每次更改,我必須停止並重新啓動服務器以查看我的更改。不能從工作流程接受 - 我目前正在設置PDF頁面的樣式,而且這是一個非常緩慢的過程,必須這樣做。PDFkit rails3.1和開發環境

我還發現這裏報告的問題相同: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進行開發,而這些都是同步工作的?

任何幫助將不勝感激! 謝謝! 託尼

+0

BTW,不需要 「else」 部分;只需返回'nil'(如我的答案) –

回答

2

這裏是我使用的設置:

  1. 我運行軌道服務器的第二個實例與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") 
    } 
    
1

如果您正在使用Pow,您可以使用多個工人。添加到您的〜/ .powconfig

export POW_WORKERS=3 

(從Pow manual拍攝)