我有以下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变量吗?
答案 0 :(得分:5)
好的,对于这些年后在这里游荡的人(就像我一样),这是对我有用的解决方案:
add_swagger_documentation base_path: lambda { |request| "http://#{request.host}:#{request.port}" }
... #other options
基本上你只需要传递一个产生Grape::Request
实例的proc,从中可以提取主机和端口数据。
答案 1 :(得分:0)
我使用http://localhost:9292/api
获得了不错的运气。我认为另一种选择是将这些设置保存在配置yml文件中,您可以根据RACK_ENV的值来设置它。