我有以下代码。它是一个 ActionMailer 类方法,它发送包含两种附件的电子邮件:
pdf 文件(_attachment),在内存中呈现并直接添加到消息中
可以从文件系统添加的其他一些文件(_attached_files)。
一切都很完美,除了一件事 - 它会泄漏内存。只要用户发送带有附件的消息,内存消耗就会不断增长。它不会返回内存。据我测试,我怀疑这个问题与文件系统中的附件有关,而不是与呈现的 PDF 文件有关。
attachments[_attachment.pdf_filename] = render(_attachment.pdf_template_path, :format => :pdf)
_attached_files.try(:each) do |file|
attachments[file.attachment_file_name] = File.read(file.attachment.path, mode:"rb")
end
mail(:to =>_recipients, :from=>_sender_name, :subject => _subject)