我们最近搬到了一个新的webhost,提供有限的存储空间,所以我们试图将所有通过Paperclip gem上传的用户上传(头像,文件等)移动到Amazon S3.我有几百个文件都对应于不同的模型,我正在尝试大量迁移.
我发现this document介绍了一个漂亮的剪纸耙子任务:
耙纸贴:刷新:missing_styles
这个命令为我做了一些工作,但是,我注意到它只是设置文件结构而不发送任何数据 – 另外还没有设置任何使用has_attached_file调用中的styles样式哈希定义的缩略图.即,我在我的一个模型上设置了以下回形针设置:
class User < ActiveRecord::Base has_attached_file :avatar,:styles => { :thumb => "100x100#",:small => "150x150>",:medium => "200x200" } end
以下是运行命令后的一些示例输出:
$rake paperclip:refresh:missing_styles Regenerating User -> avatar -> [thumb,:small,:medium] Regenerating Mercury::Image -> image -> [:medium,:thumb] Regenerating Profile -> image -> [:home_feature,:large,:medium,:thumb] Regenerating Page -> preview -> [:portfolio] Regenerating Category -> default_image -> [:home_feature,:thumb]
导航到我的S3 Bucket我可以看到所有的目录是正确的设置和每个附件,但只有原始的图像文件,他们都是0字节.我误会了这个命令的用法吗?我找不到任何其他工具来批量上传整个文件目录到S3,如果有一个安全的工具已经覆盖了这个没有要求付款,那么我是开放的耳朵.我已经尝试构建一个ruby脚本来插入他们的SDK并手动上传这些文件,但是他们的Ruby文档并不是很好.
解决方法
看来我需要超越这个ruby,s3cmd似乎是这种工作最合适的工具.在我的情况下,sync命令做了一个诀窍:
s3cmd sync my-app/public/system/ s3://mybucket