Signet gem + HttpLog gemがよかった

Signet gem

以前紹介した

Rails OAuth Provider Example

を利用して OAuth2 client の挙動を確認していたが、OAuth2 gem という誰よりも大事な名前を使っている gem で試してみたところ、そもそも OAuth2 gem の挙動があやしいことに気がついた。どう考えてもメジャーなのにドキュメントと挙動が合ってないように見える。少なくとも上のデモアプリでは期待通りに token を取得することができない。そこで代わりに使ってみたのが ruby-toolbox ですぐ近くに見えるこれ。

googleapis/signet: Signet is an OAuth 1.0 / OAuth 2.0 implementation.

当然だけど Google が自前の SDK を書く際に OAuth の部分はこれにお任せにしているので、利用実績も十分に多いと言ってよさそう。

やってみたらサクッと動いた。なんだったんだ OAuth2 gem …

HttpLog gem

OAuth2 gem も Signet gem も内部で HTTP の部分は Faraday に依存していて、挙動をどうしても細かく確認したくなったのでしばらく log の設定をゴニョゴニョやっていたんだけど、外から設定を入れる方法がどうにもよく分からない。積極的に自分で Faraday を使ったことがないので。そこで別なアプローチを採ることにした。そのために活用できたのがこれ。

trusche/httplog: Log outgoing HTTP requests in ruby

完璧に意図通りではないが、概ね期待通りに動く。いろんな HTTP ライブラリの挙動を外部から logging できる。これはなかなか便利。

More