簡體   English   中英

使用Fog和Amazon S3的公共URL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM