How can I delete a file in Sinatra after it has been sent via send_file?
Posted
by John Reilly
on Stack Overflow
See other posts from Stack Overflow
or by John Reilly
Published on 2010-05-10T20:05:07Z
Indexed on
2010/05/25
20:51 UTC
Read the original article
Hit count: 152
I have a simple sinatra application that needs to generate a file (via an external process), send that file to the browser, and finally, delete the file from the filesystem. Something along these lines:
class MyApp < Sinatra::Base
get '/generate-file' do
# calls out to an external process,
# and returns the path to the generated file
file_path = generate_the_file()
# send the file to the browser
send_file(file_path)
# remove the generated file, so we don't
# completely fill up the filesystem.
File.delete(file_path)
# File.delete is never called.
end
end
It seems, however, that the send_file
call completes the request, and any code after it does not get run.
Is there some way to ensure that the generated file is cleaned up after it has been successfully sent to the browser? Or will I need to resort to a cron job running a cleanup script on some interval?
© Stack Overflow or respective owner