Omniauthを使ったPadrinoアプリのチュートリアル 〜Mongoidを添えて

Blog Padrino and OmniAuth Overview - Padrino Ruby Web Framework でOmniauthを知り、便利そうだな〜と思ってから早14日。ようやく動かしてみました。
ActiveRecordの代わりにMongodb、ORMにはMongoidを使っています。基本的には上記ブログ記事にしたがって作業をすればいいのですが、Mongoidを使ったことによる変更点がいくつか。

Mongoidつかうための変更

プロジェクト作成
% padrino gen project omniauth --orm mongoid --tiny

ORMにMongoidを指定してプロジェクトを作成します。

モデル


PadrinoのAuthenticationHelperで使われているfind_by_idを定義しておきます。

コントローラ


もちろんDBにアクセスするところも変わります。DBに既存かどうかチェックする、なかったら新規作成。もっとMongoidらしい書き方もあるとは思いますが、今回は RailsApps/rails3-mongoid-omniauth · GitHub を参考にしました。

環境変数ENVを使う

twitterのoathを使う場合にはConsumer secretとConsumer keyがそれぞれ必要となります。冒頭のPadrinoブログに従うとコード中に直書きしていますが、これは避けたいですよね。
今回つくったPadrinoアプリの動作確認にはPowを使ったのですが、Powでは .powenv というファイルを使うことによって、環境変数ENVを設定することができます。Padrinoアプリのコードからはこの環境変数をよみこむようにしてやれば、アプリのコードとoauthに必要な情報を分離してやることができますね。
ちなみに、この環境変数ENVを使う方法はHerokuでもそのまま使えるので便利ですよね!

まとめ

まとめ
ちょっと凝ったwebアプリを作る上ではユーザごとのアカウントに対応した処理というのは不可欠だと思います。ユーザの管理なんかは既存のwebサービスに任せて、簡単にユーザとアカウントの紐づけだけをできるOmniauthのようなプラットフォームはぜひとも便利に利用したいですよね。そして、そういったちょっと凝ったwebアプリをつくるならページ数も増えてくるでしょうし、SinatraよりもPadrinoのほうがよさそうですよね。え、そもそもRailsを使えばいいんじゃあ・・・?そうですよね、使おうRails

marutanm/padrino-mongoid-omniauth · GitHub