【发布时间】:2015-03-04 01:01:43
【问题描述】:
场景:我们网站上有一些用户之前为他们的网站上传了徽标。最近,我们更改了此徽标的尺寸,并希望所有帐户都能反映此更改(我们还从我们的应用程序中删除了retina_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
我已尝试遵循此链接https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Recreate-and-reprocess-your-files-stored-on-fog 中提到的建议,但它不起作用。我已经测试以确保缓存正在保存文件,并且确实如此。然而,当我尝试和retrieve_from_cache!我无法这样做(因为缓存的文件没有名称)。
这是我的缓存文件的样子:
tmp 上传 ##########-#####-####
谢谢。
【问题讨论】:
标签: ruby-on-rails ruby amazon-web-services carrierwave fog