2013-04-03 78 views
1

我正嘗試使用來自Ruby On Rails的wicked-pdf創建pdf。它在開發模式的偉大工程,但是當我在生產中部署我得到的錯誤:wkhtmltopdf不能從warick-pdf內部執行

wkhtmltopdf is not executable 

我已在wkhtmltopdf可執行文件位於:

rails_root/bin/wkhtmltopdf-i386 

鶯是建立以包括bin文件夾戰爭:

config.includes = FileList["classes/*","bin/*"] 

我已經壞PDF配置找到正確的位置的bin:

WickedPdf.config = { 
    :exe_path => Rails.root.join('bin', 'wkhtmltopdf-i386').to_s 
} 

我運行warbler,然後在jBoss應用程序服務器上部署war。當我嘗試生成PDF時,我收到有關它不可執行的錯誤。它在開發模式下運行良好 - 不在戰爭中。

上二進制的權限應該是罰款:

-rwxr-xr-x 1 username group 11446024 Apr 3 11:40 wkhtmltopdf-i386 

不用手動包括wkhtmltopdf二進制,我嘗試使用wkhtmltopdf二進制寶石。這在開發模式下也能正常工作,但Wicked PDF無法在生產中找到二進制文件。

更新:我改變了wicked-pdf配置,指向'wkhtmltopdf-binary'gem在生產模式下提供的二進制文件。它也得到wkhtmltopdf is not executable錯誤。路徑最後是:jboss-5.1.0.GA/server/default/tmp/3j001-3g0fg5-hf2xi49o-1-hf2xiuld-9q/myrailsapp.war/WEB-INF/gems/gems/wkhtmltopdf-binary-0.9.9.1/bin/wkhtmltopdf_linux_386

+0

您是否在遠程服務器上安裝了'wkhtmltopdf'? – Trip 2013-04-19 15:16:50

+0

我在rails目錄中有'wkhtmltopdf'二進制文件,並且包含在'war'中。我能夠得到它的唯一方法就是讓'wkhtmltopdf'二進制文件位於'war'之外的某處。 – lightswitch05 2013-04-19 19:26:33

+0

@ lightswitch05看起來像你有雙/寶石 - 是正確的目錄?如果你更新你的exe_path從下面的答案中取出示例中的/ gems,那可能會起作用。 – Sady 2014-10-31 17:22:01

回答

5

你是單獨安裝wkhtmltopdf還是讓你的gem文件安裝它?

我會做到以下幾點:

gem 'wicked_pdf', '~> 0.9.10' 
gem 'wkhtmltopdf-binary', '~> 0.9.9' 

,然後設置配置:

WickedPdf.config = { 
    exe_path: "#{ENV['GEM_HOME']}/gems/wkhtmltopdf-binary-#{Gem.loaded_specs['wkhtmltopdf-binary'].version}/bin/wkhtmltopdf_linux_386" 
} 

該位#{Gem.loaded_specs['wkhtmltopdf-binary'].version}查詢你的寶石來找到最新的版本,如果你是永遠改變版本的寶石,你的prod服務器仍然能夠找到正確的文件夾。

+0

我最終在服務器之外安裝了wkhtmltopdf。下一次,我在那臺機器上,我會嘗試你的建議,並在你的工作中更新你。 – lightswitch05 2014-01-29 22:10:58

+1

哇!我不知道這需要多長時間才能回答。謝謝你,薩迪,這讓我瘋狂。我之前下載了二進制文件並拉到/ bin,但這看起來像'正確'的方式(或者至少是我正在尋找的方式)。我會將其添加到wicked_pdf文檔中。 – 2014-10-24 18:06:05

+0

將此標記爲答案,因爲@deftOfCenter說它可以工作 – lightswitch05 2014-10-31 17:44:02