2017-02-10 31 views
0

私は、アプリケーションのバックアップを作成し、データベース、画像、ファイルなどのデータとともにzipファイルにダウンロードする機能を持っています。 Tempfileクラス)は、send_dataでブラウザに送信しますが、send_dataの後に削除するとダウンロードに失敗し、そのメモリは解放されません。メモリが解放されない

send_file(zip_data.path, type: 'application/zip', filename: "#{model_name}.zip") 

zip_data.unlink 

サービスクラス:http://pastebin.com/MskjP8d7

コントローラ方法:http://pastebin.com/CV9Wr27h

答えて

0

unlinkメソッドが実行された時点で、要求はまだ完全に務められていないので、それが起こると、サーバーはしていません実際にファイルを送信しました。 send_fileは実際にWebサーバーによって処理されます。

unlinkコールをドロップすることもできます。 Ruby garbage collector will clean up Tempfiles once they are out of scope。または、send_filesend_dataに置き換えて、手動でコントローラ内からZipファイルのバイナリコンテンツを送信します。

関連する問題