我在rails项目上有一个ruby 我有几千个与该网站相关的文件。 有没有一种简单的方法可以将所有文件从虚拟主机移动到云端(亚马逊)。
基本上我有很多图像,我使用paperclip gem来存储图像。已经有一些用户并且拥有数千张图像。现在我计划迁移到云(亚马逊)。我为此目的使用了aws-s3 gem,它适用于新图像。
但是如何放置已经上传的旧图像?
我是否必须手动压缩和重新上传?还是有更好的方法?
谢谢
答案 0 :(得分:2)
嗨,我会做一个简单的rake任务来完成这个任务。它看起来像这样(未经测试):
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)
毋庸置疑 - 请确保在暂存环境中对此进行测试!
祝你好运。