Детальные «публичные» настройки для загруженных файлов с помощью Fog и Carrierwave - PullRequest
6 голосов
/ 18 июля 2011

Я создаю приложение rails, которое позволяет администратору загружать фотографии, которые, возможно, отображаются публично. Для процесса загрузки / хранения я использую драгоценный камень Carrierwave вместе с драгоценным камнем Fog и S3. Проблема в том, что для того, чтобы все это заработало, я должен сделать все файлы, загруженные в корзину s3, общедоступными. Есть ли способ сделать файлы общедоступными / закрытыми для каждого файла? Кроме того, если возможна такая детализация файла за файлом, может ли она распространяться на версии изображений (созданные с помощью автоматического изменения размера Carrierwave)?

В настоящее время в моем инициализаторе carrierwave есть следующая строка:

  config.fog_public = true

Ответы [ 2 ]

7 голосов
/ 06 августа 2011

На самом деле, в Carrierwave все просто.

Вы можете сделать это:

class PrivateUploader < StandardUploader  

  @fog_public = false

Или (не проверено, но должно работать идеально) это:

class PrivateUploader < StandardUploader  


  def fog_public
    if local_condition
      true
    else
      false
    end
  end

: -)

Я не пробовал DragonFly, но теперь, когда за последние 2 месяца с Carrierwave было исправлено несколько проблем, он намного превосходит все, что я видел. Безумно гибкий.

// матовый

5 голосов
/ 29 мая 2013

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

Использование Carrierwave 0.8.0 (в мае 2013 г.) /app/uploaders/whatever_uploader.rb

class WhateverUploader < CarrierWave::Uploader::Base
  def fog_public
    true # or false
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...