Как мне перевести «File.open» для совместимости с S3? - PullRequest
3 голосов
/ 20 июля 2010

У меня есть эта строка ..

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

За исключением того, что ищет что-то локальное, и все мои фотографии сейчас на S3. Как бы это перевести на открытие файла на S3?

Ответы [ 2 ]

1 голос
/ 12 декабря 2012

Я думаю, что вам следует скачать / передать изображение в 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.
0 голосов
/ 21 июля 2010

У вас есть два варианта:

  1. Используйте S3 Ruby-привязки и получите доступ к своим данным, используя предоставленные абстракции S3 .
  2. Продолжите абстракцию файловой системы, но привяжите S3 к локальной файловой системе прокси, используя FUSE , которая доступна для * nix / OSX (но не для Windows, насколько я знаю)делая этот подход менее общеприменимым.Это, вероятно, менее эффективно, чем вариант 1.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...