【问题标题】:How to update attachment using paperclip如何使用回形针更新附件
【发布时间】:2015-09-15 06:05:20
【问题描述】:

我用回形针上传图片到S3,

has_attached_file :attachment,
                      styles: { mini: '48x48>', small: '100x100>', product: '240x240>', large: '600x600>',larger: '860x1280>' },
                      default_style: :product
validates_attachment :attachment,
      :presence => true,
      :content_type => { :content_type => %w(image/jpeg image/jpg image/png image/gif) }

现在,我想使用 gem "paperclip-compression" 压缩已经上传到 S3 的图像,所以我添加了 processors: [:thumbnail, :compression], 如何使用 ruby​​ 脚本更新所有附件?我能够读取图像并将其存储到文件中,但无法使用文件更新附件。

【问题讨论】:

    标签: ruby-on-rails ruby amazon-s3 paperclip paperclip-validation


    【解决方案1】:

    根据回形针wiki你应该使用reprocess!方法:

    Model.each do |model|
      model.attachment.reprocess!
    end
    

    另一种选择是使用 rake 任务:

    # only thumbnails style
    rake paperclip:refresh:thumbnails CLASS=Model
    
    # or all styles
    rake paperclip:refresh CLASS=Model
    
    # only missing styles
    rake paperclip:refresh:missing_styles
    

    【讨论】:

    • 感谢 dimakura 的回答。如果我正在尝试 model.attachment.reproces!在生产中它会创建临时文件吗?如果是,这些文件会在服务器上占用大量内存
    • 我不确定。如果这是一个问题,您可以尝试前 100 个模型,然后尝试 1000 个模型并比较 CPU 和内存使用情况。然后处理更大规模的更新。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    相关资源
    最近更新 更多