URI::InvalidURIError при использовании HTTParty

Я последовал примеру с страницы HTTParty на github и получил следующее:

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

person tverghis    schedule 26.02.2015    source источник


Ответы (1)


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
person fl00r    schedule 26.02.2015
comment
Извините, это была моя ошибка. Я отредактировал вопрос, но это не решает проблему. - person tverghis; 26.02.2015
comment
знак равенства тоже не нужен - person fl00r; 26.02.2015
comment
Спасибо! Я почему-то думал, что base_uri — это переменная, а не метод из-за отсутствия круглых скобок. Просто невнимательность с моей стороны. - person tverghis; 27.02.2015