2012-03-26 44 views
1

我正在嘗試使用twitterstream gem來獲取推文。向twitterstream添加新用戶關注

list_of_users = [612473, 759251, 1367531, 6017542, 6509832] 
TweetStream::Client.new.follow(list_of_users) do |status| 
    puts "follow [#{status.user.id}]\t[#{status.user.screen_name}]\t#{status.text}" 
end 

現在我可以從列表中的這些用戶獲取推文。但是,如果我添加另一個用戶到我的數據庫我怎麼能要求TwitterStream遵循這個新用戶?

我需要我的程序檢查我的數據庫的新用戶在特定的時間間隔,如果我的數據庫包含新用戶,那麼它應該開始從該新用戶獲取推文。

謝謝

+0

你用什麼來訪問你的數據庫? ActiveRecord的? – 2012-03-26 22:19:59

+0

@AndrewGrimm:是使用ActiveRecord。但我的問題不在於從數據庫中提取用戶。 'TweetStream :: Client.new.follow(list_of_users)'使用EventMachine,當我調用'follow'時,它進入一個無限循環。所以我認爲我需要停止它,更新用戶列表,並再次呼叫新的用戶列表。 – RSK 2012-03-27 06:28:05

回答

0

一種方法是簡單地在用戶模型中添加一個after create回調。

Model User 
    after_create :get_tweets 

    def get_tweets 
    # your TweetStream code 
    end 
end 

另一種方法是有你的用戶模型一個布爾值:is_followed,簡單地找到所有的用戶where(is_followed: false)

如果您想要任務定期運行,請使用resque之類的東西。適合那種常規任務。