Конфигурация CarrierWave и Fog, S3 bucket и store_dir - PullRequest
7 голосов
/ 03 марта 2012

Я пытаюсь выяснить, как настроить CarrierWave для работы с Fog и Amazon S3.На S3 у меня есть ведро "bucket1" с папкой "images".Загрузки работают нормально.Например, изображение может быть загружено во что-то вроде https://s3.amazonaws.com/bucket1/images/picture/pic1.jpg. Однако в представлении show, когда я вызываю помощник image_url, я получаю https://s3.amazonaws.com/images/picture/pic1.jpg. Чего мне здесь не хватает?

#config/initializers/carrierwave.rb
CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => 'aws_key',
    :aws_secret_access_key  => 'aws_secret'
  }
  config.fog_directory  = 'bucket1'
  config.fog_host       = 'https://s3.amazonaws.com'
  config.fog_public     = true
  config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
end

#app/uploader/image_uploader.rb
def store_dir
  "images/#{model.class.to_s.underscore}"
end

#app/views/pictures/show.html.erb
<%= image_tag @picture.image_url if @picture.image? %>

Ответы [ 2 ]

4 голосов
/ 05 марта 2012

Попробуйте удалить

config.fog_host = 'https://s3.amazonaws.com'

конфигурации и вместо нее поставить

хранение: туман

в вашем загрузчике. Возможно, он перекрывает фактический путь с тем, который вы предоставляете.

1 голос
/ 01 сентября 2012

Хотя этот вопрос не имеет прямого отношения к данному конкретному вопросу, создается впечатление, что следующая информация является связанной и полезной.

Если вы используете непубличные ссылки в S3, вы можете управлять TTL этих ссылок с помощьюfog_authenticated_url_expiration параметр конфигурации:

...
config.fog_public = false
config.fog_authenticated_url_expiration = 600 # 10 minutes
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...