В настоящее время я создаю приложение (Rails 3.1rc6), которое включает в себя фильтрацию данных из API потоковой передачи Twitter, но у меня возникают проблемы после получения потока.
Я пробовал использовать гем Twitter-Stream игем tweetstream, но имел одну и ту же проблему с обоими, что не удивительно, так как tweetstream зависит от Twitter-Stream.
Я могу получить поток абсолютно нормально и напечатать соответствующую информацию с помощью следующего кода в трекере.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"]
возвращает правильную строку.
Спасибо,
Том