【问题标题】:Getting files from S3, putting them in heroku /tmp folder, unzipping and uploading back to s3从 S3 获取文件,将它们放在 heroku /tmp 文件夹中,解压缩并上传回 s3
【发布时间】:2011-12-12 04:02:25
【问题描述】:

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

  1. 从 amazon 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)
    }
}

感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 显然,我确实需要将 Process.pid 添加到临时路径中,例如:“#{Rails.root}/tmp/#{Process.pid}_files/”感谢您的帮助!
    猜你喜欢
    • 2014-07-26
    • 2017-03-30
    • 2016-03-31
    • 1970-01-01
    • 2020-02-12
    • 2022-08-03
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多