gpt4 book ai didi

ruby-on-rails - 使用 Fog 和 Amazon S3 的公共(public) URL

转载 作者:行者123 更新时间:2023-12-03 18:11:25 27 4
gpt4 key购买 nike

所有 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com