我有以下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变量?
好吧,对于这些年后在这里游荡的人(就像我一样),这是对我有用的解决方案:
add_swagger_documentation base_path: lambda { |request| "http://#{request.host}:#{request.port}" }
... #other options
Run Code Online (Sandbox Code Playgroud)
基本上你只需要传递一个产生Grape::Request实例的proc ,从中可以提取主机和端口数据.