2011-10-11 53 views
6

我使用Ubuntu 11.04开发Ruby on Rails中的应用程序。 在应用程序中,我需要生成pdf文档。所以我使用 wicked_pdf和wkhtmltopdf二进制宝石。wkhtmltopdf RuntimeError(wkhtmltopdf未知的位置)

在我的系统的一切开发环境工作正常。 但是,一旦我部署的应用程序在生产环节上的CentOS 5.6使用Phusion 乘客,当我尝试在运行中生成的给我下面的错误PDF文件:

RuntimeError(wkhtmltopdf的地点不详)

我使用Ruby1.9.2.p136 的Rails 3.1.1

任何帮助将非常感激....谢谢。

回答

9

你使用静态wkhtmltopdf二进制?我下载了它here它extraced到/path/to/rails_app/bin

,并把它添加到铁轨这样的:

#config/initializers/wicked_pdf.rb 
WickedPdf.config = { 
    :exe_path => Rails.root.join('bin', 'wkhtmltopdf-i386').to_s, 
} 
+0

从386改为amd64和这个工作了Heroku的为好。 –

8

为Mac OS - X,你应该通过自制

$ brew tap homebrew/boneyard # the wkhtmltopdf formula is now inactive but still available in the boneyard repository 
$ brew install wkhtmltopdf 
+0

这是不可用了:'错误:没有可用的公式为wkhtmltopdf' –

+0

再试一次,但首先安装boneyard:$ brew tap自制软件/ boneyard 酿造formular wkhtmltopdf是无效的,但仍然可用boneyard回购 – Hannes

10

另一种方法是安装wkhtmltopdf通过Gemfile安装二进制文件。

只是将下面的行添加到它:

gem 'wkhtmltopdf-binary' 

这应该增加对Linux的I386,AMD64和达尔文二进制支持。

4

解决方案运行OS X Yosemite

得到它的工作在Mac OS X 10.10(优胜美地),安装wkhtmltopdf-binary宝石,然后把它放在你的config/initializers/wicked_pdf.rb

module WickedPdfHelper 
    if Rails.env.development? 
    if RbConfig::CONFIG['host_os'] =~ /linux/ 
     executable = RbConfig::CONFIG['host_cpu'] == 'x86_64' ? 'wkhtmltopdf_linux_x64' : 'wkhtmltopdf_linux_386' 
    elsif RbConfig::CONFIG['host_os'] =~ /darwin/ 
     executable = 'wkhtmltopdf_darwin_386' 
    else 
     raise 'Invalid platform. Must be running linux or intel-based Mac OS.' 
    end 

    WickedPdf.config = { exe_path: "#{Gem.bin_path('wkhtmltopdf-binary').match(/(.+)\/.+/).captures.first}/#{executable}" } 
    end 
end 

诗:这个解决方案也可以在Linux上运行。

+1

太棒了!这对我有效。你知道为什么现在需要这个吗? – nathanvda

+0

@nathanvda我不知道。但我也想知道。 –

+0

对于mac osx,与@ben注意到的方式相同,只需设置放置二进制文件的路径,并输入正确的名称,例如:Rails.root.join('/ usr/local/bin','wkhtmltopdf “).to_s, – yozzz

0

只是有类似的问题。

正如readme说,我创建了一个初始化有:

WickedPdf.config = { 
    exe_path: '/usr/local/bin/wkhtmltopdf' 
} 
0

MAC OSX:

brew install wkhtmltopdf 

这会让你安装

brew install Caskroom/cask/wkhtmltopdf 

然后config/initializers/wicked_pdf.rb

WickedPdf.config = { 
    exe_path: '/usr/local/bin/wkhtmltopdf' 
}