problem implementing wicked pdf on heroku
我正在使用本指南将wicked_pdf集成到heroku上。但是它似乎不起作用。我从heroku那里得到了日志,它说:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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' |
请帮助。在此先感谢。
编辑:
我对代码进行了一些更改,并通过了此错误,但仍然停留在这里
如何使WickedPdf gem在Heroku上运行
(有关网址,请参见下面的引文)
您的Rails项目现已配置为Heroku。在这里,添加您的PDF文件程序逻辑。
** config / initializers / wicked_pdf.rb **
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 } |
我如何得出这个结论:
对于初学者来说,网上有很多关于
最后,在某些时候,
甚至WickedPdf \\的GitHub文档也在每个变量之间交替显示。
我的解决方案,您无需从源代码编译
您不需要从Homebrew安装
您也不需要将任何\\'wkhtmltopdf \\'帮助程序gem添加到您的项目中。我尝试了
在Heroku上的Rails控制台中:
我通过运行
我还通过发出
我运行
然后,在@barlow \\对配置
引用:
在撰写本文时:
- rails(3.2.13)
- wicked_pdf(0.9.6)
- wkhtmltopdf(0.9.9)
由2/12/2015修订
dscout开发了一个包含我答案概念的ruby。如果您的Heroku实例支持buildpacks,我建议使用gem。
- https://github.com/dscout/wkhtmltopdf-buildpack
- https://devcenter.heroku.com/articles/buildpacks
由2015年3月27日修订
与Heroku(和Linux AMD64 OS)配合使用的另一颗rubywkhtmltopdf-heroku
它会自动检测是否已安装pdfkit,wicked_pdf和wisepdf gem。
在查看您的" Edit"部分,对于
来说,它说"未定义的方法为空?"?
这意味着您在某个地方用空吗?函数在路径上的对象,而为空?是字符串而不是路径的函数。
尝试找出您在哪里使用了路径对象,并在该对象上使用to_s。
尝试一下。
如果将wkhtmltopdf的本地副本添加到您的仓库中,则可以在初始化程序中指向它。
1 2 3 | PDFKit.configure do |config| config.wkhtmltopdf ="#{RAILS_ROOT}/lib/wkhtmltopdf" end |
在存储之前,请记住在回购中chmod x您的wkhtmltopdf副本-git添加它
希望这会有所帮助。
在以下位置寻找wicked_pdf二进制文件:
并且不存在,将二进制文件放入应用程序的文件夹中,然后将文件
1 | :exe_path =>"#{Rails.root}/path/to/wkhtmltopdf-amd64" |
如果wicked_pdf创建文件,您可能会遇到的另一个问题是仅读取Heroku文件系统,因此,除非您找到一种方法来告诉wicked_pdf在tmp目录中创建pdf,否则您可能无法使用它。