2010-05-21 79 views
1

因此,我創建併發布了一個Sinatra應用程序到Heroku,沒有任何問題。我甚至用rackup在本地測試它,以確保它的功能正常。在URL中使用郵政編碼後,會對各個地方進行一系列API調用,但Heroku只是想告訴我存在服務器錯誤。Sinatra和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 

如果有人想一鼓作氣就可以了,它可以在,http://quiet-journey-14.heroku.com/達成,但沒有太多可拿。

回答

1

Hash沒有count方法。它有一個length方法。如果#確實引用了一個哈希對象,那麼問題是您調用的方法不存在。

0

如果你想看看有什麼背後#,嘗試

raise probably_hash.class.to_s

0

#並不是指哈希值,它是#<Array:0x2b2080a3e028>第一個字符。 <>之間的部分未在瀏覽器中顯示(隱藏標籤本身),但在查看源中可見。

儘管您真正的問題與Ruby無關,但是與您在HTML或XML文檔中的導航(通過DOM)無關。帳單

weather_doc.root.elements [ 「天氣」]。children.count> 1

導航所述HTML/XML文檔,選擇 '天氣' 元素,以及(嘗試)的計這些孩子。 children調用的結果沒有方法count。改爲使用length

順便說一句,你確定該文件包含標籤<weather>?因爲這就是你想要選擇的東西。

+0

'weather'元素確實存在,這是從Google天氣API返回的XML。這很奇怪,因爲這個完全相同的代碼在我的機器本地工作,沒有問題。儘管如此,我會盡可能長一點,謝謝! – 2010-05-26 13:08:39

+0

在改爲.length並推送到heroku之後,我現在得到一個「未給定的塊」錯誤。我只需要深入研究這些,再次感謝! – 2010-05-26 13:12:36

+0

您使用哪個XML分析器來瀏覽DOM? REXML,Nokogiri?這可能是相應的gem沒有安裝在你的Heroku應用程序中。你可以提供一個純文本'.gems'文件讓Heroku安裝你需要的寶石。請參閱'http:// docs.heroku.com/gems'。 順便說一句,REXML的'children'返回一個數組,它有'length'或'size'方法。 – 2010-05-26 13:37:57