Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Schmooze::进程失败+;使用grover gem转换html2pdf时_Ruby On Rails_Pdf_Pdf Generation_Puppeteer_Grover - Fatal编程技术网

Ruby on rails Schmooze::进程失败+;使用grover gem转换html2pdf时

Ruby on rails Schmooze::进程失败+;使用grover gem转换html2pdf时,ruby-on-rails,pdf,pdf-generation,puppeteer,grover,Ruby On Rails,Pdf,Pdf Generation,Puppeteer,Grover,我需要将我的html页面转换为pdf。但是我得到一个“schmooze进程失败”,当它执行grover.to_pdf时,系统挂起。它在终端上运行良好,但在我的rails项目中不起作用。听起来您的系统好像挂起了,因为默认情况下,在开发模式下运行rails时,您只运行了一个线程 当您在请求内部并尝试点击生成报告端点时,您正在排队等待请求的响应,但是由于Rails一次只能服务一个请求,因此响应永远不会出现,因此请求永远不会完成,从而导致死锁 通过填充模板或调用ActionController.rend

我需要将我的html页面转换为pdf。但是我得到一个“schmooze进程失败”,当它执行grover.to_pdf时,系统挂起。它在终端上运行良好,但在我的rails项目中不起作用。

听起来您的系统好像挂起了,因为默认情况下,在开发模式下运行rails时,您只运行了一个线程

当您在请求内部并尝试点击
生成报告
端点时,您正在排队等待请求的响应,但是由于Rails一次只能服务一个请求,因此响应永远不会出现,因此请求永远不会完成,从而导致死锁

通过填充模板或调用
ActionController.render()
并使用该模板,尝试在不发出web请求的情况下获取报表的HTML


如果这不是您的选项,请将Rails服务器配置为在开发模式下使用多线程(我建议您在开发模式下使用Puma,或任何生产模式下使用的线程)。

我将尝试第一个选项,因为选项2-我已经在开发模式下使用Puma。请参阅:Puma在单模式下启动…*版本4.3.1(ruby 2.6.4-p104),代码名:神秘旅行者*最小线程数:5,最大线程数:5*环境:开发
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