HTTP :: Parser :: Ошибка с Rails и API потоковой передачи Twitter - PullRequest
3 голосов
/ 24 августа 2011

В настоящее время я создаю приложение (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"] возвращает правильную строку.

Спасибо,

Том

1 Ответ

0 голосов
/ 28 сентября 2011

Хорошо, я понял, почему я получаю ошибку. Я пытался взять твит id как целое число и вставить его в базу данных pg (на heroku), которая ему не понравилась.

Возможно, ошибка возникла при попытке ПРОЧИТАТЬ это свойство с большим целым числом. В любом случае, я изменил тип столбца на строку и вместо этого получил свойство tweet["id_str"]. Отлично работает сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...