Ruby 与Sinatra和Heroku的问题

Ruby 与Sinatra和Heroku的问题,ruby,sinatra,heroku,Ruby,Sinatra,Heroku,所以我创建并发布了一个Sinatra应用程序给Heroku,没有任何问题。我甚至用rackup在本地对它进行了测试,以确保它工作正常。在URL中使用邮政编码后,会有一系列对不同位置的API调用,但Heroku只想告诉我服务器出现错误 我添加了一个错误页面,试图给我更多的描述,但是,它告诉我它不能执行“计数”,我认为这意味着散列。这是我认为它正在尝试执行的代码 if weather_doc.root.elements["weather"].children.count > 1 curr_

所以我创建并发布了一个Sinatra应用程序给Heroku,没有任何问题。我甚至用rackup在本地对它进行了测试,以确保它工作正常。在URL中使用邮政编码后,会有一系列对不同位置的API调用,但Heroku只想告诉我服务器出现错误

我添加了一个错误页面,试图给我更多的描述,但是,它告诉我它不能执行“计数”,我认为这意味着散列。这是我认为它正在尝试执行的代码

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

如果有人想使用它,可以在、、处找到它,但没有太多可供使用的内容。

哈希没有计数方法。它有一个长度方法。如果确实引用了散列对象,那么问题是您正在调用一个不存在的方法。

如果您想查看后面的内容,请尝试

raise可能是\u hash.class.to \u s

的第一个字符,它不引用hash。之间的部分不会显示在浏览器中隐藏标记本身,而是在视图源中可见

但真正的问题与Ruby无关,而是与通过DOM在HTML或XML文档中的导航有关。你的陈述

weather\u doc.root.elements[weather].children.count>1

导航HTML/XML文档,选择“weather”元素,并尝试计数子元素。子调用的结果没有方法计数。使用长度代替


顺便问一下,您确定文档中包含标签吗?因为这就是您试图选择的内容。

确实存在“weather”元素,这是从Google weather API返回的XML。这很奇怪,因为完全相同的代码在我的机器上本地工作,没有问题。不过,我还是要试一试,谢谢!在更改为.length并推到heroku之后,我现在得到一个未给出错误的块抛出。不过,我还是要深入研究一下,再次感谢你!您使用哪个XML解析器来导航DOM?雷克斯姆,诺科吉里?可能是您的Heroku应用程序中没有安装相应的gem。您可以提供一个纯文本.gems文件,让Heroku安装您需要的gems。看见http://docs.heroku.com/gems. 顺便说一句,REXML的子级返回一个数组,该数组具有length或size方法。