2012-10-23 34 views
4

我有以下的葡萄根類定義Rails的葡萄揚鞭:獲取當前域BASE_PATH

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變量?

回答

5

OK,任何人在這裏徘徊畢竟這些年來(像我一樣), - 這是爲我工作的解決方案:

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

基本上你只需要傳遞產生Grape::Request實例PROC,從中可以獲取主機和端口數據。

+0

好的,謝謝 –

0

我已經運用了http://localhost:9292/api。我認爲另一種選擇是將這些設置保存在config yml文件中,並且可以根據RACK_ENV的值進行設置。