2011-05-20 42 views
0

我有一個紅寶石軌道項目 我有幾千個與該網站相關的文件。 有沒有簡單的方法將所有文件從虛擬主機移動到雲(亞馬遜)。將文件從虛擬服務器移動到雲,在軌道上

基本上我有很多圖像,我使用回形針寶石來存儲圖像。已經有一些用戶,並有成千上萬的圖像。現在我已經計劃遷移到雲(亞馬遜)。我已經使用aws-s3 gem來達到這個目的,並且它對於新圖像的效果很好。

但是,如何放置已上傳的舊圖像?

我必須手動壓縮並重新上傳嗎?或者,還有更好的方法 ?

謝謝

回答

2

嗨我會對一個簡單的耙任務來完成這一點。它看起來像這樣的事情(未測試):

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 

的幾個注意事項: 如果您正在使用回形針管理和訪問,你會想它們存儲在S3這樣回形針可以訪問其中的文件。要做到這一點,使用Paperclip::Interpolations.interpolate方法。如:

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

而這不言而喻 - 請確保您在臨時環境中測試這個!

祝你好運。