respond_to do |format|
format.html
format.pdf do
grover = Grover.new('http://localhost:3000/generate_report', format: 'A4')
pdf = grover.to_pdf
File.open(Rails.root.join('report.pdf'),'wb', encoding: 'ascii-8bit') { |f| f.write(pdf)}
end
end我需要将我的html页面转换为pdf。但是我得到了一个"schmooze进程失败“,当它执行grover.to_pdf时系统挂起。它在终端上工作得很好,但在我的rails项目中就不行了。
发布于 2020-03-21 03:53:52
这听起来像是你的系统挂起了,因为当你在开发模式下默认运行Rails时,你只有一个线程在运行。
当您在请求内部并试图访问generate_report端点时,您将请求排队并等待其响应,但是,由于Rails一次只能处理一个请求,响应永远不会到来,因此请求永远不会完成,从而导致死锁。
尝试在不发出web请求的情况下获取报告的超文本标记语言,方法是填充模板或调用ActionController.render()并使用该模板。
如果这不是您的选择,那么可以将Rails服务器配置为在开发模式下使用多线程(我建议您在开发模式下使用Puma,或者在任何生产模式下使用)。
https://stackoverflow.com/questions/60747083
复制相似问题