载波+雾+缓存
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
上传
##########-#####-####
谢谢。
原来我没有 运行 迁移中的更改块中的所需代码块,因此代码从未被执行。
场景:我们网站上有一些用户之前已经为他们的网站上传了徽标。最近,我们更改了此徽标的尺寸,并希望所有帐户都能反映此更改(我们还从我们的应用程序中删除了 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 上传 ##########-#####-####
谢谢。
原来我没有 运行 迁移中的更改块中的所需代码块,因此代码从未被执行。