阻止在Paperclip中的开发/测试中将图像上载到AWS

时间:2015-11-11 15:54:28

标签: ruby-on-rails ruby ruby-on-rails-4 paperclip

我继承了一个使用Paperclip进行图像处理的项目,该项目也上传到AWS桶,通常我使用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

但我对通过什么选项有点不确定。

2 个答案:

答案 0 :(得分:3)

你可以像这样创建一个初始化器

# 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哈希:)

答案 1 :(得分:1)

Paperclip可以为每个字段提供不同的存储空间,因此请查看如何选择s3存储空间。 可能它has_attached_file :foo, storage: :s3, ...,保存本地存储应该是:filesystem