2015-02-26 1 views
2

Я последовал пример из HTTParty github page и придумал это:URI :: InvalidURIError При использовании HTTParty

class MatchHistory 
    include HTTParty 
    base_uri = "api.steampowered.com/IDOTA2Match_570" 

    def initialize 
     @options = { query: { key: STEAM_API_KEY } } 
    end 

    def latest 
     self.class.get("/GetMatchHistory/V001", @options) 
    end 
end 

get '/' do 
    history = MatchHistory.new 

    history.latest.body 
end 

Я получаю следующее сообщение об ошибке:

URI::InvalidURIError at/
the scheme http does not accept registry part: :80 (or bad hostname?) 

Однако, когда я использую более простой решение, подобное приведенному ниже, оно возвращает результаты только штрафа:

class MatchHistory 
    def initialize 
     @base_uri = "http://api.steampowered.com/IDOTA2Match_570" 
    end 

    def latest 
     HTTParty.get(@base_uri + "/GetMatchHistory/V001/?key=" + STEAM_API_KEY) 
    end 
end 

ответ

3

base_uri - метод класса, поэтому вы должны определить его внутри класса, а не в своем инициализаторе. Вы можете увидеть это в первом примере в ссылке, которую вы указали.

class MatchHistory 
    include HTTParty 

    base_uri "api.steampowered.com/IDOTA2Match_570" 

    def initialize 
     @options = { query: { key: STEAM_API_KEY } } 
    end 

    def latest 
     self.class.get("/GetMatchHistory/V001", @options) 
    end 
end 
+0

Извините, это была моя ошибка. Я отредактировал вопрос, но он не решает проблему. – tverghis

+0

Знак равного не нужен слишком – fl00r

+0

Спасибо! Я почему-то считал, что base_uri - это не просто метод из-за отсутствия круглых скобок. Просто небрежность с моей стороны. – tverghis