0

ユーザーのcvを読んだ後、zipファイルを作成しています。コードはローカル マシンで正常に動作しています。しかし、このコードをherokuにデプロイするとエラーが発生します。

   def get_stream(contractors)
    #t = Tempfile.new("my-temp-filename-#{Time.now}")  #this code on local
    t = Tempfile.new("#{Rails.root}/tmp/my-temp-filename-#{Time.now}") #this line on heroku break
    begin
      Zip::OutputStream.open(t.path) do |zos|
        contractors.each_with_index do |contractor, index|
          if contractor.cv.path
            zos.put_next_entry("#{index+1}_#{contractor.full_name.parameterize.underscore}.#{contractor.cv_file_name.split(".").last}")
            zos.print IO.read(contractor.cv.path)
         end
     end
   end
  send_file t.path, :type => 'application/zip', :filename => "Contractors_cvs.zip", :x_sendfile => true
    t.close
  rescue
    t.close
  end

終わり

heroku が --app をログに記録している間、「56 ミリ秒で 500 内部サーバー エラーが完了しました」と表示されるだけです。

助けてください。

ありがとう

4

1 に答える 1

2

最後に、これはローカルとヘロクの両方で機能します。

     def get_stream(contractors)
       begin
        Zip::File.open("#{Rails.root}/tmp/zipfile_name.zip", Zip::File::CREATE) do |zipfile|
        contractors.each_with_index do |filename, index|
      zipfile.add(filename.try(:cv_file_name), filename.try(:cv).try(:path)) if filename.present?
            end
           end

      send_file "#{Rails.root}/tmp/zipfile_name.zip", :type => 'application/zip', :filename => "Contractor_cvs.zip", :x_sendfile => true
  File.delete("#{Rails.root}/tmp/zipfile_name.zip")

       rescue         
       end
     end
于 2013-09-22T01:28:42.213 に答える