「逆引きプラグイン」の編集履歴(バックアップ)一覧はこちら
「逆引きプラグイン」(2008/10/06 (月) 15:01:15) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
使い分けや逆引き風にまとめたものです。
カテゴリ目次
#contents()
**黙って最初から導入
よく実テーブル上のカラム名や形や長さを忘れてしまうので、[[paginating_findプラグイン]]を使ってmodelにスキーマをメモしています。
Gemだけど、[[Capistrano]]を使ってデプロイ出来るのと出来ないのでは、開発効率が大きく違います。
Rails1.x系でのPagenateは、機能としては便利なのですがデータの持ち方に癖があるので、あまりそれを応用したプラグインが無かったりします。またRails2.x系だと、そんなこともあってPagenate自体がなくなりました(Rails標準ではなくプラグインを使うことが前提となった)。そんな時に使うのが[[paginating_findプラグイン]]で、これだと標準のfindメソッドを拡張してくれます。
**ログイン処理
***Rails 1.x系
[[Acts as Authenticatedプラグイン]]が標準か?
***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>>http://japan.internet.com/column/developer/20080627/26.html]](すばらしすぎ)と、open_id_authenticationのREADMEにサンプルソースがついてるので、それを交互に見ながら何やってるかを追えば、結構簡単に認証処理も作れるっぽい。SREG(Simple Registration Extension for OpenID)の対応もサクッとできそう。迷惑ユーザのidentity_urlも[[第5回 Railsで作るOpenID対応アプリケーション実践(後編)(3)>>http://gihyo.jp/dev/feature/01/openid/0005?page=3]]の流れでサクッとはじけれそう。
****参考
-[[Railsで作るOpenID対応アプリケーション実践(前編)>>http://gihyo.jp/dev/feature/01/openid/0004]]
-[[restful_open_id_authentication_redux - Hello, world! - s21g>>http://blog.s21g.com/articles/278]]
-[[Plugins - Open Id Authentication - Agile Web Development>>http://agilewebdevelopment.com/plugins/openidauthentication]]
****データベース構造
#image(http://farm4.static.flickr.com/3128/2861255363_2720fb4450_o.jpg)
#image(http://farm4.static.flickr.com/3285/2861268523_0ae9c2d71b_o.jpg)
#image(http://farm4.static.flickr.com/3143/2861289573_991ef06a4f_o.jpg)
#image(http://farm4.static.flickr.com/3224/2862108466_60deac2bd6_o.jpg)
**ファイルアップロード処理
[[Attachment_fuプラグイン]]が使えるなら使った方が楽かもね。
**レーティング系
acts_as_ratableプラグインが良さそう→否
rails 2.1系でacts_as_rateableが[[エラーを出している>http://agilewebdevelopment.com/plugins/acts_as_rateable]]みたい。あまりスケールしないとも書いてあるなぁ。
となったら、acts_as_ratedがいいのかもしれない。
**タギング系
acts_as_taggable_on_steroidsとacts_as_taggable_reduxが良さそう
使い分けは
-自分で作った何かにタグを付けるならsteroids
-他人が作った何かにタグを付けるならredux
みたい
-[[acts_as_taggable_on_steroidsとacts_as_taggable_reduxの(用途)比較CommentsAdd Star>>http://d.hatena.ne.jp/yotena/20071220/1198103145]]
***データベース構造
#image(http://farm4.static.flickr.com/3227/2861719571_8d709e1430_o.jpg)
使い分けや逆引き風にまとめたものです。
カテゴリ目次
#contents()
**黙って最初から導入
よく実テーブル上のカラム名や形や長さを忘れてしまうので、[[paginating_findプラグイン]]を使ってmodelにスキーマをメモしています。
Gemだけど、[[Capistrano]]を使ってデプロイ出来るのと出来ないのでは、開発効率が大きく違います。
Rails1.x系でのPagenateは、機能としては便利なのですがデータの持ち方に癖があるので、あまりそれを応用したプラグインが無かったりします。またRails2.x系だと、そんなこともあってPagenate自体がなくなりました(Rails標準ではなくプラグインを使うことが前提となった)。そんな時に使うのが[[paginating_findプラグイン]]で、これだと標準のfindメソッドを拡張してくれます。
**ログイン処理
***Rails 1.x系
[[Acts as Authenticatedプラグイン]]が標準か?
***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>>http://japan.internet.com/column/developer/20080627/26.html]](すばらしすぎ)と、open_id_authenticationのREADMEにサンプルソースがついてるので、それを交互に見ながら何やってるかを追えば、結構簡単に認証処理も作れるっぽい。SREG(Simple Registration Extension for OpenID)の対応もサクッとできそう。ホワイトリスト的に受付可能なOpenID Providerを絞るのも、[[第5回 Railsで作るOpenID対応アプリケーション実践(後編)(3)>>http://gihyo.jp/dev/feature/01/openid/0005?page=3]]の流れでサクッとはじけれそう。(あとはJavaScriptのライブラリとして、受付可能なOpenID Providerをリスト表示してくれるものがあればいいんだけど…)
****参考
-[[Railsで作るOpenID対応アプリケーション実践(前編)>>http://gihyo.jp/dev/feature/01/openid/0004]]
-[[restful_open_id_authentication_redux - Hello, world! - s21g>>http://blog.s21g.com/articles/278]]
-[[Plugins - Open Id Authentication - Agile Web Development>>http://agilewebdevelopment.com/plugins/openidauthentication]]
****データベース構造
#image(http://farm4.static.flickr.com/3128/2861255363_2720fb4450_o.jpg)
#image(http://farm4.static.flickr.com/3285/2861268523_0ae9c2d71b_o.jpg)
#image(http://farm4.static.flickr.com/3143/2861289573_991ef06a4f_o.jpg)
#image(http://farm4.static.flickr.com/3224/2862108466_60deac2bd6_o.jpg)
**ファイルアップロード処理
[[Attachment_fuプラグイン]]が使えるなら使った方が楽かもね。
**レーティング系
acts_as_ratableプラグインが良さそう→否
rails 2.1系でacts_as_rateableが[[エラーを出している>http://agilewebdevelopment.com/plugins/acts_as_rateable]]みたい。あまりスケールしないとも書いてあるなぁ。
となったら、acts_as_ratedがいいのかもしれない。
**タギング系
acts_as_taggable_on_steroidsとacts_as_taggable_reduxが良さそう
使い分けは
-自分で作った何かにタグを付けるならsteroids
-他人が作った何かにタグを付けるならredux
みたい
-[[acts_as_taggable_on_steroidsとacts_as_taggable_reduxの(用途)比較CommentsAdd Star>>http://d.hatena.ne.jp/yotena/20071220/1198103145]]
***データベース構造
#image(http://farm4.static.flickr.com/3227/2861719571_8d709e1430_o.jpg)