载波+雾+缓存

Carrierwave + Fog+ caching

场景:我们网站上有一些用户之前已经为他们的网站上传了徽标。最近,我们更改了此徽标的尺寸,并希望所有帐户都能反映此更改(我们还从我们的应用程序中删除了 retina_rails)。因此,我们计划进行迁移以删除视网膜 rails,同时遍历每个帐户并重新上传徽标以在所有徽标之间进行标准化。

目前,这是迁移的样子:

class RemoveRetinaDimensionsFromAccounts < ActiveRecord::Migration
  def change
    remove_column :accounts, :retina_dimensions, :text
  end

  ActsAsTenant.configure.require_tenant = false
  Account.all.each do |account|
    if account.logo?
        account.logo.cache_stored_file!
        account.logo.retrieve_from_cache!(account.logo.cache_name)
            account.logo.recreate_versions!(:small, :small)
            account.save!
        end
  end
  ActsAsTenant.configure.require_tenant = true
end

这就是我们的 carrierwave.rb 文件的样子:

CarrierWave.configure do |config|
  if Rails.env.test?
    config.storage = :file
    config.enable_processing = false

  elsif Rails.env.development?
    config.storage = :file
    config.cache_dir = "#{Rails.root}/tmp/uploads"

  elsif Rails.env.staging?
    config.storage = :fog
    config.cache_dir = "#{Rails.root}/tmp/uploads"
    config.fog_credentials = {
      :provider               => 'AWS',                                           # required
      :aws_access_key_id      => Rails.application.secrets.aws_access_key_id,     # required
      :aws_secret_access_key  => Rails.application.secrets.aws_secret_access_key, # required
      :region                 => 'us-west-2'                                      # optional, defaults to 'us-east-1'
    }
    config.fog_directory  = 'blvd-staging'                                        # required
    config.fog_public     = false 
 end
end

我已尝试遵循此 link https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Recreate-and-reprocess-your-files-stored-on-fog 中提到的建议,但它不起作用。我已经过测试以确保缓存正在保存文件,确实如此。但是,当我尝试 retrieve_from_cache!我无法这样做(因为缓存文件没有名称)。

这是我的缓存文件的样子:

tmp 上传 ##########-#####-####

谢谢。

原来我没有 运行 迁移中的更改块中的所需代码块,因此代码从未被执行。