Rails Grape-Swagger:获取base_path的当前域

Mik*_*evz 4 ruby api

我有以下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
Run Code Online (Sandbox Code Playgroud)

问题是":base_path"应该包含一个完整的URL,我不知道从哪里获取它.我已经检查了ENV变量,并且当前域没有任何内容.也没有任何"请求"对象.在Ruby中有什么方法我可以获得当前域,即HTTP_HOST变量?

Yar*_*iuk 5

好吧,对于这些年后在这里游荡的人(就像我一样),这是对我有用的解决方案:

add_swagger_documentation base_path: lambda { |request| "http://#{request.host}:#{request.port}" }
                          ... #other options
Run Code Online (Sandbox Code Playgroud)

基本上你只需要传递一个产生Grape::Request实例的proc ,从中可以提取主机和端口数据.