wkhtmltopdf在战争中不能从wicked-pdf执行

lig*_*h05 1 ruby-on-rails jruby warbler wicked-pdf

我正在尝试使用Ruby On Rails中的wicked-pdf创建一个pdf.它在开发模式下运行良好,但是当我在生产中部署时,我收到错误:

wkhtmltopdf is not executable
Run Code Online (Sandbox Code Playgroud)

我有位于以下位置的wkhtmltopdf可执行文件:

rails_root/bin/wkhtmltopdf-i386
Run Code Online (Sandbox Code Playgroud)

Warbler设置为在战争中包含bin文件夹:

config.includes = FileList["classes/*","bin/*"]
Run Code Online (Sandbox Code Playgroud)

我有邪恶的pdf配置为在正确的位置找到bin:

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

我运行warbler然后在jBoss应用服务器上部署战争.当我尝试生成PDF时,我收到有关它不可执行的错误.它在开发模式下运行良好 - 而不是在战争中.

二进制文件的权限应该没问题:

-rwxr-xr-x  1 username group 11446024 Apr  3 11:40 wkhtmltopdf-i386
Run Code Online (Sandbox Code Playgroud)

我尝试使用wkhtmltopdf-binary gem而不是手动包含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

Sad*_*ady 5

你是单独安装wkhtmltopdf还是允许你的gem文件安装它?

我会做以下事情:

gem 'wicked_pdf', '~> 0.9.10'
gem 'wkhtmltopdf-binary', '~> 0.9.9'
Run Code Online (Sandbox Code Playgroud)

然后设置配置:

WickedPdf.config = {
  exe_path: "#{ENV['GEM_HOME']}/gems/wkhtmltopdf-binary-#{Gem.loaded_specs['wkhtmltopdf-binary'].version}/bin/wkhtmltopdf_linux_386"
}
Run Code Online (Sandbox Code Playgroud)

#{Gem.loaded_specs['wkhtmltopdf-binary'].version}如果您要更改gem的版本,此位将查询您的gem以查找当前版本,您的prod服务器仍然可以找到正确的文件夹.