RubyでTwitter APIを使おうと思ったら意外と苦労した件

環境

OS: OSX 10.9
Ruby: 2.0.0-p358
sferik / twitter: 5.2.0

実際に起きた事

twitter gemをインストールして

gem install 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_SECRET"
end
p client.user_timeline('KanColle_STAFF').first.text


こんなエラーを吐かれた。エラー内容に情報なさすぎじゃないか。。。

/Users/naohiro/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/twitter-5.2.0/lib/twitter/rest/client.rb:143:in `rescue in request': Twitter::Error
	from /Users/naohiro/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/twitter-5.2.0/lib/twitter/rest/client.rb:131:in `request'
	from /Users/naohiro/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/twitter-5.2.0/lib/twitter/rest/client.rb:97:in `get'
	from /Users/naohiro/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/twitter-5.2.0/lib/twitter/rest/api/utils.rb:85:in `objects_from_response'
	from /Users/naohiro/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/twitter-5.2.0/lib/twitter/rest/api/utils.rb:76:in `objects_from_response_with_user'
	from /Users/naohiro/.rbenv/versions/2.0.0-p353/lib/ruby/gems/2.0.0/gems/twitter-5.2.0/lib/twitter/rest/api/timelines.rb:50:in `user_timeline'
	from twitter.rb:21:in `<main>'


とりあえず、一つ前のバージョン5.1をインストール。
再度実行してみると、このようなエラーが!
さっそくググってみると、 SSL証明書がないのが原因らしい。

`rescue in request': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (Twitter::Error)

解決策

証明書をダウンロードする前に、標準の証明書のパスを調べます。

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"
"/usr/local/etc/openssl/cert.pem"


証明書を先ほどのパスにダウンロードします。

wget -O /usr/local/etc/openssl/cert.pem http://curl.haxx.se/ca/cacert.pem


先ほどのコードを実行すると...、ちゃんと取得できました!
めでたし、めでたし。