その隠しファイルがそこにある理由がわからない場合は、X-send-fileまたはwget(部分的な進行状況など)の派生物である可能性があります。
理想的には、Tempfileを使用してこのようなことを行う必要があります。コードは、あなたがしていることについてのあなたのコメントに基づいています。また、ダウンロード用と圧縮用の2つのgemを使用しています。このように、フォルダを作成する必要はまったくなく、zipファイルを直接作成するだけです。zipのすべてのコンテンツファイルは自動的に削除されます。zipをダウンロードしたら、削除してください。ここでも、send_fileが転送をWebサーバーに引き渡すため、どこかでグリッチが発生する可能性があることにも言及する必要があります。そのため、ファイルがまだ提供されている間は、ファイルを削除するためのRailsプロセスは実行されません。したがって、これがあり、ローカルホストでうまく機能している場合でも、本番環境でカスタムのスケジュールされたバックグラウンドガベージコレクターを使用することを強くお勧めします。
require 'open-uri'
require 'zip/zip'
zip_path = "#{Rails.root}/public/test.zip"
urls_to_fetch = ['abc.com', 'xyz.com']
Zip::ZipFile.open(zip_path, Zip::ZipFile::CREATE) do |zipfile|
urls_to_fetch.each_with_index do |url, index|
# intialize new temp file
file = Tempfile.new(index.to_s)
# fetch the file using open-uri or wget and save it as a tmpfile
open(url, 'rb') do |read_file|
file.write(read_file.read)
end
end
# add the temp file to the list of files to zip
zipfile.add(File.basename(file), file.path)
end
# send the zipfile for download
send_file zip_path
# delete the zipfile
FileUtils.rm zip_path
ただし、これは必須ではありません。Tempfileを使用せずに作業を行っている場合は、railsrunnerがターゲットディレクトリに対して持っている権限を確認してください。
FileUtilsのドキュメントには、ファイル/フォルダを削除しようとしたときのローカルセキュリティの脆弱性に関する詳細が記載されています。