所有 RubyGems 的版本。我正在使用 Ruby on Rails 3.1.3、Ruby 1.9.2、CarrierWave 0.5.8 和 Fog 1.1.2。
我也使用 CarrierWave RubyGem 上传图片,使用 Fog RubyGem 上传 Amazon S3上传文件。
在我的 CarrierWave 初始化程序文件中,我有:
CarrierWave.configure do |config|
config.fog_credentials = {
provider: 'AWS',
aws_access_key_id: 'xxx',
aws_secret_access_key: 'xxx'
}
if Rails.env.production?
config.fog_directory = 'bucket1'
elsif Rails.env.development?
config.fog_directory = 'bucket2'
else
config.fog_directory = 'bucket3'
end
config.fog_public = false
config.fog_authenticated_url_expiration = 60
end
我有一个上传文件:
class PageAttachmentUploader < CarrierWave::Uploader::Base
CarrierWave.configure do |config|
if Rails.env.development? || Rails.env.development? || Rails.env.production?
config.fog_public = true
end
end
storage :fog
end
我有两个上传文件。我希望将一个设置为私有(private),一个设置为公开。
我试图在调用 PageAttachmentUploader 并设置 URL 时覆盖 CarrierWave 配置公开。这在本地机器中就像魅力一样,但在登台、沙盒和生产中不起作用。
我在 CarrierWave 初始化程序中更改了 config.fog_public = true。即使这在沙盒中也不起作用。我该如何解决这个问题?
最佳答案
不,您不应该直接在上传器中使用 CarrierWave.configure,因为它会更改所有上传器的默认配置,而不仅仅是每个上传器。
我不知道这是否是最好的解决方案,但您可以通过在上传器中设置类方法直接更改默认雾配置,如下所示:
class ImageUploader < CarrierWave::Uploader::Base
storage :fog
def self.fog_public
true # or false
end
end
关于ruby-on-rails - 使用 Fog 和 Amazon S3 的公共(public) URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9827475/