0

我试图使用 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
4

0 回答 0