在 Paperclip 中阻止 development/test 中的图像上传到 AWS
Prevent image upload to AWS in development/test in Paperclip
我继承了一个使用Paperclip做图像处理的项目,它也上传到AWS bucket,通常我使用Carrierwave并在测试或开发环境中选择本地保存文件
CarrierWave.configure do |config|
if Rails.env.test?
config.storage = :file
config.enable_processing = false
else
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
:region => 'eu-west-1'
}
config.fog_directory = ENV['AWS_BUCKET']
config.fog_public = true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end
end
如何用回形针实现同样的效果?我了解到您可以在初始化文件中 Define Defaults 。
但我有点不确定要通过什么选项。
Paperclip可以对每个字段有不同的存储,所以看看s3存储是如何选择的。
大概是has_attached_file :foo, storage: :s3, ...
,保存本地存储应该是:filesystem
你可以像这样创建一个初始化器
# config/initializers/paperclip.rb
if Rails.env.development? || Rails.env.test?
Paperclip::Attachment.default_options[:storage] = 'filesystem'
else
Paperclip::Attachment.default_options[:storage] = 's3'
Paperclip::Attachment.default_options[:s3_credentials] = {
bucket: ENV['AWS_BUCKET'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
# other config...
end
有关 S3 的更多选项,另请参阅 http://www.rubydoc.info/gems/paperclip/Paperclip/Storage/S3
只需将这些选项添加到 Paperclip::Attachment.default_options
哈希 :)
我继承了一个使用Paperclip做图像处理的项目,它也上传到AWS bucket,通常我使用Carrierwave并在测试或开发环境中选择本地保存文件
CarrierWave.configure do |config|
if Rails.env.test?
config.storage = :file
config.enable_processing = false
else
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
:region => 'eu-west-1'
}
config.fog_directory = ENV['AWS_BUCKET']
config.fog_public = true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end
end
如何用回形针实现同样的效果?我了解到您可以在初始化文件中 Define Defaults 。
但我有点不确定要通过什么选项。
Paperclip可以对每个字段有不同的存储,所以看看s3存储是如何选择的。
大概是has_attached_file :foo, storage: :s3, ...
,保存本地存储应该是:filesystem
你可以像这样创建一个初始化器
# config/initializers/paperclip.rb
if Rails.env.development? || Rails.env.test?
Paperclip::Attachment.default_options[:storage] = 'filesystem'
else
Paperclip::Attachment.default_options[:storage] = 's3'
Paperclip::Attachment.default_options[:s3_credentials] = {
bucket: ENV['AWS_BUCKET'],
access_key_id: ENV['AWS_ACCESS_KEY_ID'],
secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
# other config...
end
有关 S3 的更多选项,另请参阅 http://www.rubydoc.info/gems/paperclip/Paperclip/Storage/S3
只需将这些选项添加到 Paperclip::Attachment.default_options
哈希 :)