2011-08-24 36 views
3

我目前正在構建一個應用程序(Rails 3.1rc6),涉及從Twitter Streaming API過濾數據,但在接收流後遇到問題。HTTP :: Parser ::錯誤與Rails和Twitter流媒體API

我已經嘗試使用Twitter流寶石和tweetstream寶石,但都有同樣的問題,既不tweetstream是依賴於Twitter流。

我可以得到流精絕,並在tracker.rb文件下面的代碼,我上作爲守護程序運行計劃打印相關信息:

require 'rubygems' 
require 'twitter/json_stream' 
require 'json' 

EventMachine::run { 
    stream = Twitter::JSONStream.connect(
    :path => '/1/statuses/filter.json?track=rails', 
    :auth => 'user:password' 
) 

    stream.each_item do |item| 
    @result = JSON.parse(item) 
    puts @result["text"] 

    end 

#Handle Errors... 

至於我打算過濾某些詞彙並將其存儲在數據庫中,但是當我嘗試用ActiveRecord的做任何事情,我得到以下錯誤

Tom-Liveseys-MacBook-Air:twitter_stream Tom$ ruby ./lib/daemons/tracker.rb 
String 
/Library/Ruby/Gems/1.8/gems/twitter-stream-0.1.14/lib/twitter/json_stream.rb:121:in `<<': Could not parse data entirely   (HTTP::Parser::Error) 
from /Library/Ruby/Gems/1.8/gems/twitter-stream-0.1.14/lib/twitter/json_stream.rb:121:in `receive_data' 
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine' 
from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run' 
from ./lib/daemons/tracker.rb:5 

沒有人有任何想法,爲什麼我不能做任何事情與數據有用嗎?我已經檢查過JSON是否正確解析,並且@result["text"]返回正確的字符串。

感謝,

湯姆

回答

0

好吧,我想通了,爲什麼我得到的錯誤。我試圖將推文id作爲一個整數並將其插入到它不喜歡的pg數據庫(在heroku上)。

也許錯誤來自嘗試讀取那個大的整數的屬性。無論如何,我將列類型更改爲字符串,取而代之的是tweet["id_str"]屬性。現在效果很好。