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

时间:2012-10-23 20:10:03

标签: 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

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

2 个答案:

答案 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的值来设置它。