[技術書つまみ食い] 『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