Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 Prawn PDF导致heroku rails应用程序内存膨胀_Ruby On Rails_Email_Pdf_Heroku_Memory - Fatal编程技术网

Ruby on rails Prawn PDF导致heroku rails应用程序内存膨胀

Ruby on rails Prawn PDF导致heroku rails应用程序内存膨胀,ruby-on-rails,email,pdf,heroku,memory,Ruby On Rails,Email,Pdf,Heroku,Memory,每当我生成对虾PDF时,我的Heroku Rails应用程序内存就会膨胀。我为每一代使用以下代码。 使用: Ruby 2.5.3 对虾2.2.2 虾表0.2.2 pdf = InvoicePdf.new(hash) send_data pdf.render, filename: "receipt_#{order_id}.pdf" 在我的邮件中,作为附件: pdf = InvoicePdf.new(hash) t = Tempfile.create do |f| pdf.render_fil

每当我生成对虾PDF时,我的Heroku Rails应用程序内存就会膨胀。我为每一代使用以下代码。 使用: Ruby 2.5.3 对虾2.2.2 虾表0.2.2

pdf = InvoicePdf.new(hash)
send_data pdf.render, filename: "receipt_#{order_id}.pdf"
在我的邮件中,作为附件:

pdf = InvoicePdf.new(hash)
t = Tempfile.create do |f|
  pdf.render_file f
  f.flush
  File.read(f)
end
attachments["receipt.pdf"] = t if t
上述代码源于此:

这两种方法都会导致内存膨胀。我见过的唯一解决方案是使用AWS/cloudinary来存储pdf。我只会使用pdf两次,没有时间压力,所以这似乎是一种浪费。有什么想法吗

我在开机时没有内存问题

谢谢,
盖伊

以防将来有人看到这一点——Ruby GC看起来是一团糟。简单地取消对pdf=nil的引用就可以确保它是垃圾收集的

以防将来有人看到这一点——Ruby GC看起来是一团糟。简单地取消对pdf=nil的引用就可以确保它是垃圾收集的

副本的副本