[技術書つまみ食い] 『MongoDB イン・アクション』第三回

[技術書つまみ食い] 『MongoDB イン・アクション』第二回 の続きです。

3章 MongoDB を使ったプログラムの作成

この章は、The Twitter Ruby Gem を使って Twitter の検索結果を取得して MongoDB へ突っ込んでいくというサンプルです。

ハマったので fix

写経なので、一言一句間違いなくソースをタイプして動かしたんですが、動きませんでした。( uninitialized constant Twitter::Search (NameError) )
gem i twitter したあと、require ‘twitter’ して下記のコードを動かすっていう部分です。(p59)

  def save_tweets_for(term)
    Twitter::Search.new.containing(term).each do |tweet|
      @tweets_found += 1
      tweet_with_tag = tweet.to_hash.merge!({tags: [term]})
      @tweets.save(tweet_with_tag)
    end
  end

わしが動かした時点の The Twitter Ruby Gem のバージョンは 4.4.2 ですが、Twitter:Search は既に存在していませんでした。
Twitter API への get だけであっても、認証済みクライアントを使うことが推奨(もしくは強制?)されている影響っぽいっすね。
下記の様に、まず Twitter::Client のインスタンスを作って、search メソッドで検索すれば結果が出てきます。※ ***** の部分は適宜用意したものをセット

  def save_tweets_for(term)
    client = Twitter::Client.new(
      consumer_key: "*****",
      consumer_secret: "*****",
      oauth_token: "*****",
      oauth_token_secret: "*****"
    )
#   Twitter::Search.new.containing(term).each do |tweet|
    client.search(term).results.each do |tweet|
      @tweets_found += 1
      tweet_with_tag = tweet.to_hash.merge!({tags: [term]})
      @tweets.save(tweet_with_tag)
    end
  end

とりあえず動く事が確認できたから、次回は initialize で @client を作って使い回すように修正してから続きをやりましょう。

とりあえずまとめ

写経してるとこういう事もあるよね!
次回は、収集した tweets を sinatra で表示するところをやります。
以上!

カテゴリー: 技術書つまみ食い パーマリンク

[技術書つまみ食い] 『MongoDB イン・アクション』第三回 への1件のコメント

  1. ピンバック: [技術書つまみ食い] 『MongoDB イン・アクション』第四回 | UPEC Blog

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください