Проблемы с Синатрой и Героку - PullRequest
1 голос
/ 22 мая 2010

Итак, я без проблем создал и опубликовал приложение Sinatra для Heroku. Я даже протестировал его локально с помощью rackup, чтобы убедиться, что он работает нормально. После того, как почтовый индекс получен из URL, происходит ряд вызовов API, но Heroku просто хочет сообщить мне, что произошла ошибка сервера.

Я добавил страницу с ошибкой, которая пытается дать мне больше описания, однако он говорит мне, что не может выполнить `count 'для #, что, я полагаю, означает хэш. Вот код, который, я думаю, пытается выполнить ...

if weather_doc.root.elements["weather"].children.count > 1
  curr_temp = weather_doc.root.elements["weather/current_conditions/temp_f"].attributes["data"]
else
  raise error(404, "Not A Valid Zip Code!")
end

Если кто-то хочет ударить по нему, его можно получить по адресу, http://quiet -journey-14.heroku.com / , но там не так много, чтобы иметь.

Ответы [ 3 ]

1 голос
/ 22 мая 2010

Hash не имеет count метода. У него есть метод length. Если # действительно ссылается на хеш-объект, то проблема в том, что вы вызываете несуществующий метод.

0 голосов
/ 26 мая 2010

То, что # не относится к хэшу, это первый символ #<Array:0x2b2080a3e028>.Часть между < и > не отображается в браузерах (скрывая сами теги), но отображается в View Source.

Ваша настоящая проблема связана не с Ruby, а с вашей навигацией вHTML или XML документ (через DOM).Ваше заявление

weather_doc.root.elements ["weather"]. Children.count> 1

перемещается по документу HTML / XML, выбирая элементы 'weather',и (пытается) считать детей.Результат вызова children не имеет метода count.Вместо этого используйте length.

Кстати, вы уверены, что документ содержит тег <weather>?Потому что это то, что вы пытаетесь выбрать.

0 голосов
/ 22 мая 2010

Если вы хотите увидеть, что стоит за #, попробуйте

raise probably_hash.class.to_s

...