4

我有以下葡萄根类定义

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 变量吗?

4

2 回答 2

5

好的,对于这些年来在这里徘徊的任何人(就像我一样), - 这是对我有用的解决方案:

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

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

于 2014-08-05T08:43:58.710 回答
0

我使用http://localhost:9292/api. 我认为另一种选择是将这些设置保存在配置 yml 文件中,您可以根据 RACK_ENV 的值进行设置。

于 2013-02-04T19:40:48.563 回答