Настройка хоста ActiveStorage - PullRequest
1 голос
/ 09 апреля 2019

Прямо сейчас у меня есть настройка, которая позволяет пользователям направлять свои приложения непосредственно на мое приложение Rails, используя CNAME (иначе, укажите www.example.com на мое приложение, размещенное на www.example2.com).

Все это прекрасно работает! Но я хочу подавать изображения, используя мое приложение www.example2.com в качестве хоста (по причинам CDN).

Похоже, что ActiveStorage по умолчанию (и заставляет ...) хост быть текущим хостом и не позволяет мне изменить его.

У меня есть:

config.action_controller.asset_host = 'https://www.example2.com'
    Rails.application.routes.default_url_options[:host] = 'https://example2.com'

и это прекрасно работает для статических активов! Но ActiveStorage image_tag по-прежнему использует домен, на котором просматривается сайт, в данном случае www.example2.com.

Мысли о том, как заставить ВСЕГДА работать с помощью asset_host?

1 Ответ

0 голосов
/ 07 июня 2019

Использовать ActiveStorage::Current.host, который использует CurrentAttributes, тип атрибутов, которые устанавливаются / сбрасываются при каждом запросе и могут использоваться везде в вашем приложении Rails:

class ApplicationController
  before_action do
    ActiveStorage::Current.host = 'https://example2.com'
  end
 end

Если вы хотитеиспользуйте его вне контроллера, используйте ActiveStorage::Current.set для предоставления хоста:

ActiveStorage::Current.set(host: "https://www.example2.com") do
  item.file_ttachments.first.service_url
end

Справочные документы по Rails: https://edgeapi.rubyonrails.org/classes/ActiveStorage/SetCurrent.html

...