[英]Public URL with Fog and Amazon S3
所有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
我有兩個上傳者文件。 我想把一個設置為私有,一個設置為公共。
我正在嘗試在調用PageAttachmentUploader時覆蓋CarrierWave配置並將URL設置為public。 這在本地計算機中就像魅力一樣,但在登台,沙箱和生產中不起作用。
我在CarrierWave初始化器中更改了config.fog_public = true。 即使這在沙盒中也不起作用。 我該如何解決這個問題?
不,您不應該直接在您的上傳者中使用CarrierWave.configure,因為它將更改所有上傳者的默認配置,而不僅僅是每個上傳者。
我不知道這是否是最佳解決方案,但您可以通過在上傳器中設置類方法直接更改默認霧配置,如下所示:
class ImageUploader < CarrierWave::Uploader::Base
storage :fog
def self.fog_public
true # or false
end
end
實際上,最好的方法(我發現)是做以下事情:
class ImageUploader < CarrierWave::Uploader::Base
storage :fog
configure do |c|
c.fog_public = true # or false
end
end
這樣做感覺更符合CarrierWave的風格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.