第0回 Rails勉強会@東京

http://wiki.fdiary.net/rails/?Rails%CA%D9%B6%AF%B2%F1%A1%F7%C5%EC%B5%FE

先日の11/05日に第0回 Rails勉強会@東京に行ってきました。急な応募にもかかわらず29名全員が欠席無しで参加とかすごい!

感想はいろんな人が書いているので、自分が当日発表したpluginだけ公開します。

http://svn.rails2u.com/public/plugins/trunk/

ActiveHeart

主に日本語関係で便利じゃないのかなぁ、といったものが入ってるpluginです。今現在は

  • ActiveRecordMessagesJa
  • TransSid

が入ってます。ActiveRecordMessagesJaはくまくまーさんのValidationsを参考にメッセージ周りのローカライズを行ってます。このpluginを入れて

 class Foo < ActiveRecord::Base
   set_field_names :name, => 'お名前', :source => '本文'

とARのmodel定義でfield_nameに対応した日本語を指定することで、ほぼ完璧にActiveRecordのメッセージを日本語化することができます。
TransSidはphpの人になじみ深いと思いますが、sessionをcookieでなくURLなどで引き回すのに使います。これは携帯用に結構必須な機能なので作りました。url_forなどのrailsのURL生成メソッドを使うと_session_idが自動的に付与され、またformのhiddenに_session_idが埋め込まれます。利用方法は

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:trans_sid] = true

のようにどこかでActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:trans_sid]をtrueにします。このタイミングはいつでもOKなので、before_filterで携帯かどうかを判別して、携帯ならtrueに、といった使い方も可能です。

YamlValidation

YamlValidationはその名の通り、ActiveRecordのvalidationを外部yamlファイルに書くことができます。今までmodel内側に

#app/models/foo.rb
 class Foo < ActiveRecord::Base
   validates_length_of :source , :minimum => 10
   validates_length_of :password, :minimum => 8
   validates_length_of :password_confirm, :minimum => 8

と記述していたのを

#app/models/foo.validates.yml
-
 validate: length_of
 field: source
 minimum: 10

-
 validate: length_of
 fields:
  - password
  - password_confirm
 minimum: 8

yamlの別ファイルにまとめることが可能なため、すっきりします。validateが一つぐらいならいいのですが、複数あったり、オプションがたくさんある場合は外部記述できた方が便利なので作りました。でもソースが非常に汚いので、Rubyハカーな人はアドバイスいただけるとうれしいです。