Правим пример конфига

This commit is contained in:
Nastia Gorokhova-Alekseeva
2022-06-15 13:35:47 +03:00
parent 73bf5f5224
commit 669c78dd7e

View File

@@ -1,61 +1,30 @@
# frozen_string_literal: true # frozen_string_literal: true
STATIC_CDN = Rails.env.development? ? 'http://localhost:3000' : 'https://static-ru.insales.ru'
# Fog::Storage требует разные префиксы для разных S3 стораджев.
# Этот хэлпер использует поле с префиксом, если есть, или добавляет его.
prefix_credentials = lambda do |prefix, input|
result = input.symbolize_keys
%i[access_key_id secret_access_key].each do |field|
key = :"#{prefix}_#{field}"
result[key] ||= result.delete(field) if result[field]
end
result
end
fog_directory = lambda do |bucket:, **options|
Fog::Storage.new(options).directories.new(key: bucket, public: true)
end
PAPERCLIP_NO_CACHE_S3_CONFIG_BASE = PAPERCLIP_NO_CACHE_S3_CONFIG_BASE =
case Rails.env {
when 'production', 'test' storage: :no_cache_s3,
{ # Не скачиваем файлы по http в тестах, чтобы не делать стабы vcr для всего подряд.
storage: :no_cache_s3, # В продакшене файлы скачиваются по url, чтобы качать через cdn и не тратить облачный трафик.
# Не скачиваем файлы по http в тестах, чтобы не делать стабы vcr для всего подряд. to_file_using_fog: Rails.env.test?,
# В продакшене файлы скачиваются по url, чтобы качать через cdn и не тратить облачный трафик. url: "#{STATIC_CDN}/:key", # Умный cdn сам решает куда идти за файлом.
to_file_using_fog: Rails.env.test?, stores: {
url: "#{STATIC_CDN}/:key", # Умный cdn сам решает куда идти за файлом. yandex: {
stores: { region: 'ru-central1',
yandex: fog_directory[ endpoint: 'https://storage.yandexcloud.net',
provider: 'AWS', access_key_id: '123',
region: 'ru-central1', secret_access_key: '345',
endpoint: 'https://storage.yandexcloud.net', bucket: 'digital-static'
**prefix_credentials[:aws, Rails.application.secrets.yandex_cloud], },
bucket: 'digital-static' sbercloud: {
], provider: 'AWS',
sbercloud: fog_directory[ region: 'ru-moscow',
provider: 'AWS', endpoint: 'https://obs.ru-moscow-1.hc.sbercloud.ru',
region: 'ru-moscow', access_key_id: '123',
endpoint: 'https://obs.ru-moscow-1.hc.sbercloud.ru', secret_access_key: '345',
**prefix_credentials[:aws, Rails.application.secrets.sbercloud], bucket: 'digital-static'
bucket: 'digital-static' }
] }
} }.freeze
}.freeze
else
{
storage: :no_cache_s3,
url: '/:key',
stores: {
s3: fog_directory[
provider: 'Local',
local_root: Rails.root.join('public').to_s,
bucket: ''
]
}
}.freeze
end
# Добавляет общий префикс ко всем ключам. # Добавляет общий префикс ко всем ключам.
PAPERCLIP_NO_CACHE_S3_CONFIG = ->(key) { PAPERCLIP_NO_CACHE_S3_CONFIG_BASE.merge(key: "digital/#{key}") } PAPERCLIP_NO_CACHE_S3_CONFIG = ->(key) { PAPERCLIP_NO_CACHE_S3_CONFIG_BASE.merge(key: "digital/#{key}") }