mirror of
https://github.com/kemko/paperclip.git
synced 2026-01-01 16:05:40 +03:00
Правим пример конфига
This commit is contained in:
@@ -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}") }
|
||||||
|
|||||||
Reference in New Issue
Block a user