次のコードがあります。これは、2 種類の添付ファイルを含む電子メールを送信する ActionMailer クラス メソッドです。
メモリにレンダリングされ、メッセージに直接追加された pdf ファイル (_attachment)
ファイル システムから追加できるその他のファイル (_attached_files)。
すべてが完全に機能しますが、1 つのことを除いて、メモリ リークが発生します。ユーザーが添付ファイル付きのメッセージを送信している限り、メモリの消費量は増え続けます。メモリは戻りません。私がテストした限りでは、この問題はレンダリングされた 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)