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

Far*_*our 3 ruby-on-rails heroku amazon-s3

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

  1. 从亚马逊s3获取zip文件
  2. 将它们放在heroku#{Rails.root}/tmp文件夹中
  3. 解压缩文件
  4. 将它们上传回s3
  5. 删除临时文件

如果我在本地运行应用程序,一切都有效,但当我尝试在heroku上运行应用程序时,它只是不起作用.该脚本运行并没有给我任何错误,但文件不会传输到tmp文件夹.

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

我正在使用AWS :: S3 :: S3Object.url_for生成临时URL以从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)
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Kev*_*tre 6

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