Rails Grape-Swagger: получить текущий домен для base_path

У меня есть следующее определение класса корня Grape

module Api
 class Root < Grape::API
 mount Api::Version1
 add_swagger_documentation :mount_path => 'docs', 
 :base_path => "/api", 
 :markdown => true, 
 :hide_documentation_path => true
 end
end

Проблема в том, что ": base_path" должен содержать полный URL-адрес, и я не знаю, где его получить. Я проверил переменную ENV, и нет ничего близкого к текущему домену. Также нет объекта "запроса". Есть ли какой-либо способ в Ruby, я могу просто получить текущий домен, т.е. Переменную HTTP_HOST?

2 ответа

Хорошо, для тех, кто блуждает здесь после всех этих лет (как и я), - это решение, которое сработало для меня:

add_swagger_documentation base_path: lambda { |request| "http://#{request.host}:#{request.port}" }
 ... #other options

В основном вам просто нужно передать proc, который дает экземпляр Grape::Request, из которого вы можете вытащить данные хоста и порта.


У меня была приличная удача, используя http://localhost:9292/api. Я думаю, что другой альтернативой было бы сохранить эти параметры в файле конфигурации yml, и вы могли бы установить это на основе значения RACK_ENV.

licensed under cc by-sa 3.0 with attribution.