2
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 项目。

4

1 回答 1

1

听起来您的系统正在挂起,因为默认情况下在开发模式下运行 Rails 时,您只运行 1 个线程。

当您在请求内部并尝试访问generate_report端点时,您正在排队请求并等待它的响应,但是由于 Rails 一次只能处理一个请求,响应永远不会到来,所以请求永远不会完成,导致僵局。

尝试在不发出 Web 请求的情况下获取报告的 HTML,方法是填充模板或调用ActionController.render()并改用它。

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

于 2020-03-20T19:53:52.260 回答