CarrierWave и Fog, ведро S3 и конфигурация store_dir

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

person Jonathan Mui    schedule 03.03.2012    source источник
comment
вы размещаете его на героку?   -  person noob    schedule 05.03.2012
comment
Я размещаю его самостоятельно через HostGator (dev) и EC2 (prod)   -  person Jonathan Mui    schedule 05.03.2012


Ответы (2)


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

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

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

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

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

person mrgreenfur    schedule 05.03.2012
comment
Раньше у меня были обе конфигурации. Мое исправление состояло в том, чтобы просто удалить туман_хост. Теперь он загружается на bucket1.s3.amazonaws.com/images/picture/image_name. jpg. Который работает просто отлично! - person Jonathan Mui; 06.03.2012

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

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

...
config.fog_public = false
config.fog_authenticated_url_expiration = 600 # 10 minutes
...
person Community    schedule 31.08.2012