Roh*_*hit 17 pdf-generation ruby-on-rails heroku production-environment wicked-pdf
我正在使用本指南在heroku上集成wicked_pdf.但不知何故它似乎不起作用.我从heroku获得了日志,它说:
Processing PdfController#get_pdf to pdf (for 115.248.175.50 at 2011-02-15 23:54:44) [GET]
Parameters: {"format"=>"pdf", "action"=>"get_pdf", "id"=>"1", "controller"=>"pdf"}
***************WICKED***************
Rendering pdf/get_pdf
RuntimeError (PDF could not be generated!
/usr/ruby1.8.7/lib/ruby/1.8/open3.rb:73:in `exec': No such file or directory - /app/fa369291-829b-4b61-9efe-b2f0d0a0a42c/home/bin/wkhtmltopdf-amd64 - - (Errno::ENOENT)
from /usr/ruby1.8.7/lib/ruby/1.8/open3.rb:73:in `popen3'
from /usr/ruby1.8.7/lib/ruby/1.8/open3.rb:59:in `fork'
from /usr/ruby1.8.7/lib/ruby/1.8/open3.rb:59:in `popen3'
from /usr/ruby1.8.7/lib/ruby/1.8/open3.rb:57:in `fork'
from /usr/ruby1.8.7/lib/ruby/1.8/open3.rb:57:in `popen3'
from /app/fa369291-829b-4b61-9efe-b2f0d0a0a42c/home/vendor/plugins/wicked_pdf/lib/wicked_pdf.rb:22:in `pdf_from_string'
from /app/fa369291-829b-4b61-9efe-b2f0d0a0a42c/home/vendor/plugins/wicked_pdf/lib/pdf_helper.rb:28:in `make_pdf'
from /app/fa369291-829b-4b61-9efe-b2f0d0a0a42c/home/vendor/plugins/wicked_pdf/lib/pdf_helper.rb:39:in `make_and_send_pdf'
from /app/fa369291-829b-4b61-9efe-b2f0d0a0a42c/home/vendor/plugins/wicked_pdf/lib/pdf_helper.rb:13:in `render'
from /app/fa369291-829b-4b61-9efe-b2f0d0a0a42c/home/app/controllers/schedule_controller.rb:33:in `get_pdf'
Run Code Online (Sandbox Code Playgroud)
请帮忙.提前致谢.
编辑:
我在代码中做了一些更改并完成了这个错误,但仍然停留在这里
NoMethodError (undefined method empty? for #<Pathname:0x2b7112392480>)
sca*_*er2 38
如何让WickedPdf gem在Heroku上运行
(请参阅以下引用的网址)
bin在Rails应用程序的根目录中命名的文件夹.wkhtmltopdf二进制文件的bin文件夹.您将需要适用于您的开发系统的版本和适用于Heroku的AMD64版本.不要不添加到您的git回购呢.bin文件夹中的每个二进制文件设置执行权限,例如chmod +x bin/wkhtmltopdf-amd64git add bin wicked_pdf到您的Gemfile和bundle install.不需要其他wkhtmltopdf宝石.config/initializers调用的文件夹中创建一个文件wicked_pdf.rb.git commit -am 'added wkhtmltopdf binaries and wicked_pdf gem'git push heroku您的Rails项目现在已配置为Heroku.从这里,添加PDF文件的程序逻辑.
**config/initializers/wicked_pdf.rb**
if Rails.env.production?
wkhtmltopdf_path = "#{Rails.root}/bin/wkhtmltopdf-amd64"
else
# Linux (check your processor for Intel x86 or AMD x64)
# wkhtmltopdf_path = "#{Rails.root}/bin/wkhtmltopdf-amd64"
# wkhtmltopdf_path = "#{Rails.root}/bin/wkhtmltopdf-i386"
# OS X
wkhtmltopdf_path = "#{Rails.root}/bin/wkhtmltopdf-0.9.9-OS-X.i386"
# Windows
# wkhtmltopdf_path = 'C:\Program Files/wkhtmltopdf/wkhtmltopdf.exe'
end
WickedPdf.config = { exe_path: wkhtmltopdf_path, wkhtmltopdf: wkhtmltopdf_path }
Run Code Online (Sandbox Code Playgroud)
我是如何得出这个结论的:
对于初学者来说,有关于网络的几个误导性的文章wkhtmltopdf中,wicked_pdf宝石,和Heroku.最新版本的wkhtmltopdf(10.0+)也存在导致执行挂起的问题.
最后,在某些时候,配置变量名称必须有变化,WickedPdf因为有几篇文章引用,:exe_path而其他文章引用:wkhtmltopdf.甚至WickedPdf的GitHub文档也在每个变量之间交替.
我的解决方案,你就不会需要编译wkhtmltopdf从源代码.你没有需要安装wkhtmltopdf的自制.如果你真的想,我提供了解决方案brew install wkhtmltopdf.您也不需要在项目中添加任何'wkhtmltopdf' 辅助宝石.我试过wkhtmltopdf,wkhtmltopdf-heroku,wkhtmltopdf-engineyard,wkhtmltopdf-binary宝石和GitHub的回购协议.在当地工作得很好.Heroku没有运气.
从Heroku上的Rails控制台:我通过运行RUBY_PLATFORM产生了什么来调查运行Heroku服务器的CPU "x86_64-linux".我还bin通过发出Dir.entries('bin')查看实际存在的文件来查看Heroku上的文件夹.我注意到wkhtmltopdf我测试的一些宝石将它们的可执行文件放在这个文件夹中.线索!我跑去WickedPdf.new.pdf_from_string('Hello')查看输出错误并测试各种WickedPdf配置.
然后,在@ barlow的配置答案中PDFKit,有一个子笔记给出了最终的关键.在提交给Git之前,你必须给wkhtmltopdf二进制文件执行Unix执行权限.答对了!
引用:
在撰写本文时:
2015年12月2日修订
dscout开发了一个包含我的答案概念的宝石.如果您的Heroku实例支持buildpack,我建议使用gem.
2015年3月27日修订
另一个与Heroku(和Linux AMD64操作系统)配合使用的gem wkhtmltopdf-heroku 它会自动检测是否安装了pdfkit,wicked_pdf和wisepdf gems.
小智 5
看完你的编辑部分后面写着"未定义的方法为空? #<Pathname:0x2b...>
这意味着你在某个地方使用空?路径上的函数对象是空的吗?是字符串而不是路径的函数.
尝试找出你在哪里使用路径对象并在该对象上使用to_s.
试试看.
| 归档时间: |
|
| 查看次数: |
7909 次 |
| 最近记录: |