【发布时间】:2011-08-24 10:37:47
【问题描述】:
我目前正在构建一个应用程序 (Rails 3.1rc6),该应用程序涉及从 Twitter 流 API 过滤数据,但在接收流后遇到问题。
我尝试过同时使用 Twitter-Stream gem 和 tweetstream gem,但都遇到了同样的问题,这并不奇怪,因为 tweetstream 依赖于 Twitter-Stream。
我可以很好地获取流,并在我计划作为守护进程运行的 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"] 返回正确的字符串。
谢谢,
汤姆
【问题讨论】:
标签: ruby-on-rails-3 activerecord twitter