перемещение файлов с виртуального сервера в облако в рельсах - PullRequest
0 голосов
/ 20 мая 2011

У меня есть проект ruby ​​on rails У меня есть несколько тысяч файлов, связанных с сайтом. Есть ли простой способ перенести все файлы с виртуального хоста в облако (amazon).

В основном у меня много изображений, и я использую скрепку для их хранения. Уже есть несколько пользователей и тысячи изображений. Теперь я планировал мигрировать в облако (амазонка). Для этой цели я использовал гем aws-s3, и он отлично работает для новых изображений.

Но как поставить старые изображения, которые уже были загружены?

Нужно ли мне вручную архивировать и перезагружать? или есть лучший способ?

Спасибо

1 Ответ

2 голосов
/ 20 мая 2011

Привет, я бы выполнил простое задание по рейку, чтобы выполнить это.Это будет выглядеть примерно так (не проверено):

desc "port files to s3"
task :port => :environment do
    AWS::S3::Base.establish_connection!(
        :access_key_id => S3_CONFIG['access_key_id'],
        :secret_access_key => S3_CONFIG['secret_access_key']
    )
    Images.all.each do |image|
      new_image_path = "/images/#{image.id}/#{image.file_name_with_extension}"
      AWS::S3::Object.store(new_image_path,open(image.current_path_to_image),S3_CONFIG['bucket_name'],:access => :public_read)  
    end
end

Несколько замечаний: если вы используете paperclip для управления и доступа к файлам, вы захотите сохранить их в s3, чтобы paperclip мог получить к ним доступ.Для этого используйте метод Paperclip::Interpolations.interpolate.как:

new_image_path = Paperclip::Interpolations.interpolate("/accounts/:account_id/images/:id/:style/:basename.:extension",image,:small)

И это само собой разумеется - убедитесь, что вы проверите это в промежуточной среде!

Удачи.

...