Ruby нет ошибки метода с HTTParty

Я пытаюсь сделать почтовый запрос в Ruby, и я получаю непоследовательное поведение. В настоящее время я использую ruby-2.0.0-p598 на OSX.

При использовании PRY я набираю следующую команду post:

HTTParty.post(@base_uri + '/method/?argument1&api_key=' + @api_key)

Я получаю успешный ответ от API. Однако, когда я запускаю его через свои спецификации или внутри класса, я получаю:

неопределенный метод `+' для nil:NilClass

Я знаю, что это связано со знаком плюс, но мне кажется странным, что у меня другое поведение. Не могли бы вы подсказать, как правильно это сделать?

Заранее спасибо.


person mageofzema    schedule 01.05.2015    source источник


Ответы (2)


Похоже, что @base_uri и/или @api_key имеют значение null. Пожалуйста, дважды проверьте, инициализированы ли они допустимыми строками или нет. Тогда попробуй

 HTTParty.post("#{@base_uri}/method/?argument1&api_key=#{@api_key}")

В этом случае ruby ​​автоматически попытается преобразовать @base_uri и @api_key в строку, поэтому нет необходимости явно вызывать метод to_s.

person Shahzad Tariq    schedule 01.05.2015

Добрый день. Поведение правильное - некоторая переменная = nil. У вас есть проверочные переменные, или (в этом случае лучше не делать) вызов to_s:

HTTParty.post(@base_uri.to_s + '/method/?argument1&api_key=' + @api_key.to_s)
person diderevyagin    schedule 01.05.2015
comment
Да, это должно быть первое, иначе это будет TypeError вместо NoMethodError. Я думаю, что в целом было бы нехорошо добавлять #to_s, но поскольку многие люди (или, по крайней мере, я) обычно использовали бы здесь интерполяцию, это в основном одно и то же. - person ; 01.05.2015