У меня есть базовая настройка ActiveStorage с одной моделью, has_many_attached :file_attachments
. В другом сервисе я пытаюсь создать ссылку для использования вне основного приложения (электронная почта, работа и т. Д.).
С S3 в производстве я могу сделать:
item.file_attachments.first.service_url
и я получаю соответствующую ссылку на корзину S3 + объект.
Я не могу использовать метод, предписанный в направляющих рельсов: Rails.application.routes.url_helpers.rails_blob_path(item.file_attachments.first)
Это ошибки с:
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
Я могу передать ему аргумент host: 'http://....'
, и он счастлив, хотя он и не генерирует полный URL, только путь.
В разработке Я использую дисковое хранилище файлов и не могу использовать ни один из методов:
> Rails.application.routes.url_helpers.rails_blob_path(item.file_attachments.first)
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
Настройка хоста здесь также не генерирует полный URL.
В производстве service_url
работает, однако здесь, в разработке, я получаю ошибку:
> item.file_attachments.first.service_url
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
и указание хоста не помогает:
item.file_attachments.first.service_url(host:'http://localhost.com')
ArgumentError: unknown keyword: host
Я также пытался добавить
config.action_mailer.default_url_options = { :host => "localhost:3000" }
config.action_storage.default_url_options = { :host => "localhost:3000" }
Rails.application.routes.default_url_options[:host] = 'localhost:3000'
безуспешно.
У меня вопрос - как мне получить полный URL-адрес таким образом, чтобы он работал как в разработке, так и в производстве? или где мне установить хост?