配置环境以使用Carrierwave在Amazon S3上使用不同的存储路径

PEF*_*PEF 7 ruby-on-rails amazon-s3 carrierwave

我想在我的S3存储桶中有不同的文件夹,以便从开发环境中清除生产数据库.我不知道如何做到这一点,这是我在carrierwave初始化器中提出的骨架:

if Rails.env.test? or Rails.env.development?
   CarrierWave.configure do |config|
     //configure dev storage path
   end
end

if Rails.production?
   CarrierWave.configure do |config|
     //configure prod storage path
   end
end
Run Code Online (Sandbox Code Playgroud)

iwa*_*bed 5

两种选择:

选项1:您不关心按型号ID组织文件

在您的carrierwave.rb初始化程序中:

Rails.env.production? ? (primary_folder = "production") : (primary_folder = "test")

CarrierWave.configure do |config|
  # stores in either "production/..." or "test/..." folders
  config.store_dir = "#{primary_folder}/uploads/images"
end
Run Code Online (Sandbox Code Playgroud)

选项2:您是否关心按型号ID(即用户ID)组织文件

在您的上传器文件中(即image_uploader.rbuploaders目录中):

class ImageUploader < CarrierWave::Uploader::Base

  ...

  # Override the directory where uploaded files will be stored.
  def store_dir
    Rails.env.production? ? (primary_folder = "production") : (primary_folder = "test")

    # stores in either "production/..." or "test/..." folders
    "#{primary_folder}/uploads/images/#{model.id}"
  end

  ...

end
Run Code Online (Sandbox Code Playgroud)