くりにっき

フルスタックキュアエンジニアです

【今月のgem】twitter_retryを作った

github.com

どんなgem?

Twitter APIのエラーハンドリングをいい感じに行うためのgemです

作った経緯

弊社はTwitter APIを使ったアプリがいくつかあるのですが、エラーハンドリング周りが共通化されていなかったのでgemにしました。一応弊社のアプリ2〜3個くらい見て汎用化したつもりです。

使い方

TwitterRetry.with_handing do
  # some twitter API code
  twitter.update("some tweet")
end

with_handing のブロックの中に任意のTwitter APIの処理を書くだけで、

  • 「Your account is suspended and is not permitted to access this feature.(凍結済みユーザのエラー)」が投げられたら TwitterRetry::SuspendedError を投げる
  • 「User is over daily status update limit.(一時的な規制)」 や 「Status is a duplicate.(重複連投)」などが投げられたらエラーは握りつぶす
  • Twitter側の一時的なエラー(Over capacityやInternal errorなど)が投げられたら1秒待って3回までリトライ。それでダメなら TwitterRetry::RetryOverError を投げる

と、いい感じにエラーハンドリングを行います。

追伸

gemを月に1つペースで作ってるのでせっかくなので「今月のgem」というタイトルつけました