Ruby on rails 颗粒状';公共';使用Fog和Carrierwave上传文件的设置

Ruby on rails 颗粒状';公共';使用Fog和Carrierwave上传文件的设置,ruby-on-rails,ruby-on-rails-3,amazon-s3,carrierwave,fog,Ruby On Rails,Ruby On Rails 3,Amazon S3,Carrierwave,Fog,我正在创建一个rails应用程序,允许管理员上传可选公开显示的照片。对于上传/存储过程,我使用Carrierwave gem以及Fog gem和S3。问题是,为了让这一切正常工作,我必须公开上传到s3存储桶的每个文件。是否有一种方法可以使文件逐个公开/私有?此外,如果可以按文件粒度划分此文件,是否可以扩展到图像的版本(通过自动Carrierwave调整大小创建) 目前,我的carrierwave初始值设定项中有以下行: config.fog_public = true 事实上,在Carri

我正在创建一个rails应用程序,允许管理员上传可选公开显示的照片。对于上传/存储过程,我使用Carrierwave gem以及Fog gem和S3。问题是,为了让这一切正常工作,我必须公开上传到s3存储桶的每个文件。是否有一种方法可以使文件逐个公开/私有?此外,如果可以按文件粒度划分此文件,是否可以扩展到图像的版本(通过自动Carrierwave调整大小创建)

目前,我的carrierwave初始值设定项中有以下行:

  config.fog_public = true

事实上,在Carrierwave很简单

您可以这样做:

class PrivateUploader < StandardUploader  

  @fog_public = false
class PrivateUploader
或者(未经测试但应能完美工作)如下:

class PrivateUploader
:-)

我还没有尝试过蜻蜓,但在过去的两个月里,Carrierwave解决了几个问题,这比我见过的任何其他产品都要好得多。非常灵活


//matt

只需让uploader类重写基类即可。我今天也把头发扯掉了(这对我很有用:

使用Carrierwave 0.8.0(2013年5月) /app/uploaders/whatever_uploader.rb

class WhateverUploader < CarrierWave::Uploader::Base
  def fog_public
    true # or false
  end
end
class WhateverUploader
在大多数Rails上传程序中,这可能是一个长期以来一直被要求缺少的功能。我建议使用DragonFly,因为它允许前所未有的定制水平,并且能够做到这一点。在快速查看DragonFly之后,它确实支持我试图实现的功能,并且似乎比CarrierWave和w更灵活嗯。谢谢。为了实现这一点,我之前设置了一个after:store回调,将我的原始版本设置为private-to-public。这段代码极大地简化了我的工作。特别是,为了使除原始版本外的所有上传版本都公开,我现在在abov中使用
!self.version\u name.nil?
作为我的
本地条件
e代码。
class WhateverUploader < CarrierWave::Uploader::Base
  def fog_public
    true # or false
  end
end