从S3获取文件,将它们放在heroku / tmp文件夹中,解压缩并上传回s3

时间:2011-10-20 21:55:56

标签: ruby-on-rails heroku amazon-s3

我正在开发一个试图执行以下操作的应用程序:

  1. 从亚马逊s3获取zip文件
  2. 将它们放入heroku#{Rails.root} / tmp文件夹
  3. 解压缩文件
  4. 将它们上传回s3
  5. 删除临时文件
  6. 如果我在本地运行应用程序,一切正常,但是当我尝试在heroku上运行应用程序时,它只是不起作用。该脚本运行并且没有错误,但文件不会传输到tmp文件夹。

    我是否需要做一些不同的事情来存储heroku tmp文件夹中的文件?文件名中是否需要Process.pid?

    我正在使用AWS :: S3 :: S3Object.url_for生成临时网址以从s3获取文件

    我正在使用以下代码来获取文件:

    Net::HTTP.start("s3.amazonaws.com") { |http|
        resp = http.get(file_path)
        open("#{Rails.root}/tmp/files/#{tmp_save_path}", "wb") { |file|
            file.write(resp.body)
        }
    }
    

    感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

除非你有更多的代码片段,否则我的猜测是Heroku上不存在目录“#{Rails.root} / tmp / files / ...”(这应该是提升:Errno::ENOENT: No such file or directory) 。在每次通话之前尝试使用mkdir_p创建它(记住Heroku将清除tmp)。您需要从路径中解析出该文件夹(请参阅file utilities)。