※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

使い分けや逆引き風にまとめたものです。
カテゴリ目次

黙って最初から導入

よく実テーブル上のカラム名や形や長さを忘れてしまうので、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をリスト表示してくれるものがあればいいんだけど…)
参考
データベース構造

ファイルアップロード処理

Attachment_fuプラグインが使えるなら使った方が楽かもね。

レーティング系

acts_as_ratableプラグインが良さそう→否

rails 2.1系でacts_as_rateableがエラーを出しているみたい。あまりスケールしないとも書いてあるなぁ。
となったら、acts_as_ratedがいいのかもしれない。

タギング系

acts_as_taggable_on_steroidsとacts_as_taggable_reduxが良さそう
使い分けは
  • 自分で作った何かにタグを付けるならsteroids
  • 他人が作った何かにタグを付けるならredux
みたい

データベース構造