Настроить среду для локального использования файловой системы и Amazon на Heroku - PullRequest
21 голосов
/ 20 марта 2011

Я не уверен, как настроить среду таким образом, чтобы Carrier Wave использовала локальное хранилище файлов при локальном запуске приложения (разработка) и s3 после загрузки в heroku (производство)

в хранилище разработки:файл

в производственном хранилище: s3

Ответы [ 3 ]

24 голосов
/ 21 марта 2011

Либо модель, либо вы можете установить ее глобально.Посмотрите файл readme для v0.5.2 (текущий гем) по адресу https://github.com/jnicklas/carrierwave/tree/v0.5.2

В нижней части приведены некоторые инструкции по настройке среды тестирования.Используйте один и тот же подход для использования разных конфигураций для «разработки» и «производства», например, добавьте файл «carrierwave.rb» в «config / initialisers» и добавьте код конфигурации

if Rails.env.test? or Rails.env.cucumber?
  CarrierWave.configure do |config|
    config.storage = :file
    config.enable_processing = false
  end
end

и для разработки

if Rails.env.development?
  CarrierWave.configure do |config|
    config.storage = :file
  end
end

и производство

if Rails.env.production?
  CarrierWave.configure do |config|
    config.storage = :s3
  end
end
7 голосов
/ 05 мая 2013

Самый простой способ, которым я обычно занимаюсь, - через Uploader.

class CoverUploader < CarrierWave::Uploader::Base
  # Choose what kind of storage to use for this uploader:
  storage (Rails.env.production? ? :fog : :file)
end
1 голос
/ 20 марта 2011

Я предполагаю, что это где-то установлено в модели.Вы могли бы сделать что-то вроде

if Rails.env.production?
  // set production
else
  // set dev / test
end
...