I am attempting to classify whether or not tweets are geo-tagged based on certain keywords using the Ruby Twitter Gem. I can do this just fine from the rails console, but I went to reflect my findings in a view, and I just don't know how to do that.
Here is what I am doing on the command line:
I begin by setting up my streaming client:
client = Twitter::Streaming::Client.new do |config|
config.consumer_key = "MYCODE"
config.consumer_secret = "NOTYOURS"
config.access_token = "HANSHOT"
config.access_token_secret = "FIRST"
end
Then I initialize my counts:
count = 0
geo = 0
And finally I paste in my brief script and run enter:
client.filter(:track => "cat") do |tweet|
count += 1
if(tweet.place.nil?)
# Do nothing
else
geo += 1
end
end
To access my results, I need to Ctrl+C and type 'geo' or 'count' into the console.
In an ideal world, I'd have a view that displayed the count and geo numbers. Said view would refresh with the updated numbers whenever I refreshed the view.
I tried throwing this in a controller, but then the page never loads, because presumably, the controller is infinitely parsing the stream and never gets a chance to render.
I stuck it in a model file, but that also did nothing.
So, am I going about this the totally wrong way? Is getting these numbers impossible from anywhere but the IRB?
There's a few things you need to keep in mind when creating controller code:
So in general terms, your controller code might look like:
This presumes the
client.filter
operation can produce ten results in a short period of time.