私は私のホスティングソリューションとしてLinodeを使用しています。私は動的にmp3s(および他のメディア)を取り、ダウンロード用の.zipファイルを作成するレール3アプリを持っています。これは、開発に正常に動作しますが、私はまだ私のprodサーバー上のダウンロードをzipファイルをそれを置くが、私はそれを解凍するとき、それはファイルを作成したら、FOO-bar.zip.cpgz相続人prodでの.zipファイルの生成に関する問題(Rails 3)
私のコントローラからのコードスニペットと呼ばれる -
def get_zip
t = Tempfile.new("#{@foobar.slug}-#{request.remote_ip}.zip")
Zip::ZipOutputStream.open(t.path) do |zos|
@foobardownloads.each do |foobardownload|
extension = File.extname(foobardownload.foobardownload_file_name).gsub(/^\.+/, '')
zos.put_next_entry("#{foobardownload.title}.#{extension}")
zos.print open(foobardownload.foobardownload.url).read
end
end
send_file t.path, :x_sendfile => true, :type => 'application/zip', :filename => "#{@foobar.slug}.zip"
t.close
end
また、私はnginxを使用していることを言及する必要があります。 – BandsOnABudget
begin/ensure/endブロックを使用して、例外の場合に一時ファイルが閉じられるようにする必要があります。また、tempfile( 't.unlink')を閉じた後(確実に句の中で)、一時ファイルのリンクを解除するべきです。 – skalee