[技術書つまみ食い] 『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 イン・アクション』第四回 | UPEC Blog