Twitter Gem for Rails不会带回推文

时间:2015-03-28 20:45:42

标签: ruby-on-rails ruby twitter

我正在使用twitter gem来运行Ruby 2.2.1上的Rails 4.2项目。我有以下代码:

  def fetch_aisis_writer_tweets
    # Cache the tweets and expire after 5 minutes.
    data = Rails.cache.fetch([:aisis_twitter_feed, Time.now.to_i/60/5], expires_in: 15.seconds){
      tweet_array = [];
      tweet = twitter_client.search("#AisisWriter").take(10).each do |tweet|
        tweet_array.push(tweet)
      end
    }

    render json: data
  end

返回一个空的推文数组。运行twitter_client.search("#AisisWriter").take(10)不返回任何内容。然而,如果我们去推特并搜索特定的标签,#AisisWriter我们可以看到我确实收到了包含这个标签的大量推文。

那么为什么上面的代码返回一个空的推文数组?

更新

以下有些人建议我使用Streaming API。所以我更新了我的代码,使用他们的代码示例和流API来显示新的数据对象。

  def fetch_aisis_writer_tweets
    # Cache the tweets and expire after 5 minutes.
    data = Rails.cache.fetch([:aisis_twitter_feed, Time.now.to_i/60/5], expires_in: 15.seconds){
      tweet_array = [];

      tweet = twitter_stream.filter(track: '#AisisWriter') do |streamed_tweet|
        tweet_array.push(streamed_tweet)
      end
    }

    render json: data
  end

但是唉,没有任何事情发生,控制台只显示:

Processing by Api::Internal::TwitterController#fetch_aisis_writer_tweets as */*

并且页面一直在尝试加载。 在一天结束时,我只想要来自此特定哈希标记的最新10条推文。

1 个答案:

答案 0 :(得分:0)

来自https://dev.twitter.com/rest/public/search

  

在介入之前,重要的是要知道Search API专注于相关性而非完整性。这意味着搜索结果中可能缺少某些推文和用户。如果要匹配完整性,则应考虑使用Streaming API。

这可以解释为什么twitter_client.search("#AisisWriter").take(10)返回一个空数组。

twitter_client.search不是流API终结点。

假设twitter_client被定义为Twitter::Streaming::Client个对象,以下内容应该有效(假设有#AisisWriter的新推文:

twitter_client.filter(track: "#AisisWriter") do |object|
  puts object.text if object.is_a?(Twitter::Tweet)
end