Linode를 호스팅 솔루션으로 사용하고 있습니다. 나는 동적으로 mp3 (및 다른 미디어)를 취하고 다운로드 용 .zip 파일을 만드는 레일 3 응용 프로그램이 있습니다. 그것은 개발에 잘 작동하지만 zip 파일은 여전히 다운로드하지만 압축을 풀면 foo-bar.zip.cpgz라는 파일이 생성됩니다.prod (Rails 3)에서 .zip 파일을 생성하는 데 문제가 발생했습니다.
내 컨트롤러의 코드 스 니펫 -
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