Sis puella magica!

いろいろ書く予定

Twitter Gem使ってみた

Twitterオバマ大統領(@BarackObama)があかり大好きbot(@akari_daisuki)をフォローしているとかいう画像を目にした
少し前からRubyTwitter Gemを使ってみたかったので、Twitter Gemで検証してみた

環境

まず環境
今回はWindowsでやってみた

>ruby -v
ruby 2.0.0p0 (2013-02-24) [x64-mingw32]

Twitter Gemのインストール

Twitter Gem使ったことないのでインストールから

>gem install twitter

すると

Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'

とエラーが出るので
http://github.com/oneclick/rubyinstaller/wiki/Development-Kit
にしたがってDevKitをインストールする
行ったことは

>cd (Devkitを展開したパス)
>ruby dk.rb init
(config.ymlの確認をする)
>ruby dk.rb install

うまくいったようなので再度

>gem install twitter

インストール終了

require 'twitter'

でtrueが返ってくることを確認

dev.twitter.comに登録

次にconsumer_key, consumer_secret, access_token, access_token_secretを取得する

https://dev.twitter.com/
へ行って、自分のアカウントで適当に登録する
この辺の説明は省略

検証プログラム

require 'twitter'

#各自取得したものに書き換える
client = Twitter::REST::Client.new do |config|
  config.consumer_key = "YOUR_CONSUMER_KEY"
  config.consumer_secret = "YOUR_CONSUMER_SECRET"
  config.access_token = "YOUR_ACCESS_TOKEN"
  config.access_token_secret = "YOUR_ACCESS_TOKEN_SECRET"
end

obama = client.user("BarackObama")
akari = client.user("akari_daisuki")

p client.friendship?(obama, akari)

実行してみるとclient.user("BarackObama")を実行したときに

Twitter::Error: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

というエラーが出た

SSLはよくわからないが、環境変数SSL_CERT_FILEに証明書へのパスを設定するとエラーが出なくなった
http://curl.haxx.se/ca/cacert.pem
から証明書をダウンロードして

>set SSL_CERT_FILE=(cacert.pemへのパス)

とする

先ほどのプログラムを実行すると

false

と表示される
オバマ大統領はあかり大好きbotをフォローしている」というのはたぶん嘘

その他

最近Twitter Gemの仕様変更があったようで、調べているときに自分の環境では動かないコードがとても多くて大変だった

client = Twitter::REST::Client.new do |config|

Twitter.configure do |config|

となっているところがあったり、

config.oauth_token = ...

では警告が出るので

config.access_token = ...

と書き換えたりした
最初からRubyDoc.infoを参照すればよかった