【问题标题】:carrierwave backgrounder s3 recreate_versions载波后台程序 s3 recreate_versions
【发布时间】:2016-02-04 20:39:50
【问题描述】:

我正在尝试按照https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Recreate-and-reprocess-your-files-stored-on-fog 的说明进行操作,但我遇到了错误。我的文件名为hat.jpg

我正在使用carrierwave_backgrounder,所以我需要这些说明来立即处理。

with_avatar.each do |instance|
    begin
      instance.process_avatar_upload = true
      instance.avatar.cache_stored_file!
      instance.avatar.retrieve_from_cache!(instance.avatar.cache_name)
      instance.avatar.recreate_versions!
      instance.save!
    rescue => e
      Rails.logger.info("ERROR: UserAvatar: #{instance.id} -> #{e}")
    end
  end

所以,我在控制台中一次尝试了一行。如果我设置 process_avatar_upload = true,则下一行失败

undefined method `cached?' for nil:NilClass

如果我再次运行相同的命令,我会得到

undefined method `content_length' for nil:NilClass

最后,如果我运行第三次,它似乎可以工作。但是,当我到达 recreate_versions 时!我明白了:

No such file or directory [my file path]/uploads/tmp/1454615129-9112-7053/square_hat.jpg

它是正确的,没有正方形,因为这就是我想要创建的。

如何在 s3 上重新创建我的版本?我有很多事情要做。谢谢。

【问题讨论】:

    标签: ruby-on-rails amazon-s3 carrierwave


    【解决方案1】:

    这“应该”就足够了:

    instance.process_avatar_upload = true
    instance.avatar.recreate_versions!
    

    参考: https://github.com/carrierwaveuploader/carrierwave/blob/master/lib/carrierwave/uploader/versions.rb#L216

    如果您使用的是相当旧的官方 gem(0.10.0),您应该给大师一个机会。如果您没有像 :from_version => :foo 这样的特殊版本设置或像

    这样的嵌套版本
    version :foo do
      version :foobar do
        [...]
      end
    end
    

    它应该像以前一样工作。 (但在非生产环境中尝试(!))

    【讨论】:

    • 好的,所以我确实改为只使用上面提到的两行。我现在也在用master。我删除了我正在使用的 from_versions。所有这些都让我可以重新创建版本。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-09
    相关资源
    最近更新 更多