使い分けや逆引き風にまとめたものです。
カテゴリ目次
黙って最初から導入
よく実テーブル上のカラム名や形や長さを忘れてしまうので、
paginating_findプラグインを使ってmodelにスキーマをメモしています。
Gemだけど、
Capistranoを使ってデプロイ出来るのと出来ないのでは、開発効率が大きく違います。
Rails1.x系でのPagenateは、機能としては便利なのですがデータの持ち方に癖があるので、あまりそれを応用したプラグインが無かったりします。またRails2.x系だと、そんなこともあってPagenate自体がなくなりました(Rails標準ではなくプラグインを使うことが前提となった)。そんな時に使うのが
paginating_findプラグインで、これだと標準のfindメソッドを拡張してくれます。
ログイン処理
Rails 1.x系
Rails 2.x系
これが一番ってのは無いみたい。OpenIDを絡めて比較してみると・・・
機能 |
Restful Authentication |
open_id_authentication |
openid_fu_generator |
restful_open_id_authentication_redux |
ユーザ登録 |
○ |
× |
○ |
○ |
ログイン(認証) |
○(パスワード) |
○(OpenID) |
○(パスワード/OpenID) |
○(パスワード/OpenID) |
セッション管理 |
○ |
× |
○ |
○ |
アクセス制御 |
△ |
× |
○ |
○ |
ログアウト |
○ |
× |
○ |
○ |
アカウント管理 |
× |
× |
○ |
○ |
形態 |
plugin |
plugin |
gem |
plugin |
OpenIDの対応バージョン |
× |
2.0 |
2.0 |
?(1.0かも) |
備考 |
OpenID使わない場合デファクトスタンダードらしい |
シンプルにOpenIDの認証機能だけ提供。普通はRestful Authenticationと組み合わせるらしい |
パスワード+OpenIDなら一番しっかりしてる感じがする。細かいところでredux(→)よりよさげなところが見える |
Restful Authenticationとopen_id_authenticationが最初から組み合わさっている感じなんだろうか。Rails2.1でも動く |
まーでも、実際に使ってみた訳じゃなくて、ソース追った程度だからね。はまりポイントがあるのかもしれないし。
全部ruby-openidってgemを使ってるのかな(未確認)
→色々はまったので追記
まずruby-openid
このgemかなり良くできていて、他のプラグインなどはほとんどruby-openidに依存しているんだけど、ruby-openidだけを使って認証システムを作るにはOpenIDに対して精通してないと無理っぽい。各クラスやメソッドの意味とか流れを把握してないと、これだけで組むのは辛いって事。
次openid_fu_generator
見た目は一番リッチな機能を提供してくれそうなんだけど、バージョン0.0.1からあがってないし、使ってみたらsessionsコントローラのbeginアクションの一番最初の分岐で止まる。ソースを追ったけど、下手に機械的なコードを隠蔽しているせいで、流れを追うのが難しい。結局原因解明できなかったのであきらめ。ちなみにrails2.1.1+ruby-openid2.1.2+openid_fu_generator0.0.1で試してました。
次open_id_authentication
シンプルにruby-openidのラッパーとして動くみたいだけど、他のプラグインと違うのは、migrationファイルやライブラリは提供するものの、ジェネレータなどは付属してないため、UserコントローラやSessionコントローラを自作する必要があるって事。まぁ、単体で使うことは想定してないんだろうな。
見ておくべきは
OpenIDとRails:Authentication 2.0(すばらしすぎ)と、open_id_authenticationのREADMEにサンプルソースがついてるので、それを交互に見ながら何やってるかを追えば、結構簡単に認証処理も作れるっぽい。SREG(Simple Registration Extension for OpenID)の対応もサクッとできそう。ホワイトリスト的に受付可能なOpenID Providerを絞るのも、
第5回 Railsで作るOpenID対応アプリケーション実践(後編)(3)の流れでサクッとはじけれそう。(あとはJavaScriptのライブラリとして、受付可能なOpenID Providerをリスト表示してくれるものがあればいいんだけど…)
参考
データベース構造
ファイルアップロード処理
レーティング系
acts_as_ratableプラグインが良さそう→否
rails 2.1系でacts_as_rateableが
エラーを出しているみたい。あまりスケールしないとも書いてあるなぁ。
となったら、acts_as_ratedがいいのかもしれない。
タギング系
acts_as_taggable_on_steroidsとacts_as_taggable_reduxが良さそう
使い分けは
- 自分で作った何かにタグを付けるならsteroids
- 他人が作った何かにタグを付けるならredux
みたい
データベース構造
最終更新:2008年10月06日 15:01