如何将“File.open”翻译为S3兼容?

时间:2010-07-20 19:33:08

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

我有这条线..

@organization.search_image = File.open(@photo.photo.path(:original))

除了寻找本地的东西,我的所有照片现在都在S3上。我如何将其转换为在S3上打开文件?

2 个答案:

答案 0 :(得分:1)

我认为您应该做的是在S3中下载/流式传输图像并将其写入新文件,然后使用新文件。

open('newpic.png', 'w') do |file|
    S3Object.stream('pic.png', 'bucket_name') do |chunk|
      file.write chunk
    end
end

#Write the streamed file to newpic.png then use newpic.png.

答案 1 :(得分:0)

您可以想到两个选项:

  1. 使用S3 Ruby bindings并使用 S3 提供的抽象访问您的数据。
  2. 继续文件系统抽象,但使用FUSE S3 绑定到本地代理文件系统,该版本可用于* nix / OSX(但据我所知,不适用于Windows)方法不太普遍适用。这也可能比选项1效率低。