У меня есть приложение rails, которое имеет несколько моделей с вложениями скрепки, которые все загружены на S3. Это приложение также имеет большой набор тестов, который выполняется довольно часто. Недостатком этого является то, что тонна файлов загружается в нашу учетную запись S3 на каждом тестовом прогоне, заставляя тестовый пакет работать медленно. Это также немного замедляет процесс разработки и требует, чтобы у вас было подключение к Интернету для работы над кодом.
Существует ли разумный способ установки механизма хранения скрепки на основе среды Rails? В идеале наши среды тестирования и разработки будут использовать локальное хранилище файловой системы, а рабочая среда будет использовать хранилище S3.
Я также хотел бы извлечь эту логику в общий модуль, так как у нас есть несколько моделей, которые будут нуждаться в этом. Я бы хотел избежать такого решения внутри каждой модели:
### We don't want to do this in our models...
if Rails.env.production?
  has_attached_file :image, :styles => {...},
                    :path => "images/:uuid_partition/:uuid/:style.:extension",
                    :storage => :s3,
                    :url => ':s3_authenticated_url', # generates an expiring url
                    :s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
                    :s3_permissions => 'private',
                    :s3_protocol => 'https'
else
  has_attached_file :image, :styles => {...},
                    :storage => :filesystem
                    # Default :path and :url should be used for dev/test envs.
end
  Обновление: Липкая часть заключается в том, что параметры вложения :path и :url должны различаться в зависимости от используемой системы хранения.
Любые советы или предложения будут очень благодарны!: -)