我试图使用 tweetstream gem 来访问 twitter 的流 api 以获取推文并将推文保存在数据库中。
我第一次尝试使用 eventmachine 和 Ruby 纤维来加速推文插入
我不确定我使用红宝石纤维和事件机器的方式是否正确。我需要帮助和建议来告诉我我的 ruby 纤维和事件机器的实现是否正确。
请注意,tweetstream api 配置已在初始化程序中编写并按预期工作。我只需要帮助某人查看我的实施并告诉我是否可以改进。
require 'rubygems'
require 'tweetstream'
require 'eventmachine'
require 'fiber'
class TweetLocator
#get tweets
def self.fetch_and_save_tweets
EventMachine.run do #using eventmachine on tweet insert
client = TweetStream::Client.new
@tweet_fibers = [Fiber.current]
client.locations(-180, -90, 180, 90) do |tweet|
@tweet_fibers << Fiber.new do
self.save_tweet_to_db(tweet)
end
@tweet_fibers.last.resume
end
end #end of eventmachine run
end
#save tweet
def self.save_tweet_to_db(tweet)
if tweet['geo']
Tweet.create!({
location: tweet['geo']['coordinates'],
status: tweet['text'],
profile_pic_url: tweet['user']['profile_image_url'],
user_handle: tweet['user']['screen_name']
})
end
end
end