Ruby on Railsのセミナに行ってきた

Railsのことをあまりに知らないのでどうしたものかなぁ思っていたところセミナあるということで行ってきました。
最初の1時間はRubyの文法を中心とした話、後半の1時間はRailsの話で計2時間、ためになりました。2時間も無料で話を聞かせてくれるなんてありがとうございました。JPAの無料セミナとかしたら人はあつまるんだろうか。

自分なりの理解だと

  • RailsのModelはStrutsのActionForm + HibernateのEntityみたいなもの
  • RailsのViewはJSPみたいなもの
  • RailsのControllerはStrutsのAction + サービスレイヤのクラスみたいなもの

となりました。

印象に残ったことをメモ

  • Controllerのインスタンス変数にViewからアクセスできる(インスタンス変数にはDBから取得したModelを置くのだと思う)。
  • 画面のバリデーションはControllerではなくModelに置く(Modelに置かないとRailsのサポートを受けられないらしい)。
  • ActiveRecordが遅い理由はDBアクセスのたびにDBスキーマの情報を取得するから(Oracleだとやっぱり遅いのかな)。
  • ActiveRecordで結合を使ったSQLを発行させるにはincludeという機能を使うらしい(Fetch Joinのようなもの?)。
  • セッションはDBに書く設定にするのがいい(セッションのデータは自動で消えないので自分で削除する処理を走らせる必要がある)。
  • Railsは遅い。でも解決策はある。
    • Railsについているプロファイラを使ったチューニング
    • サーバーの増設(マシンなんて安い)
    • キャッシュの利用(MemCached?)
  • Web サーバにはMongrelを使うのがスタンダードらしい。他の選択肢に比べて安定しているとか。
  • プロトタイプではRails、仕様が固まったあとはJavaPHPという開発スタイルもあるらしい(コストかからないのかなぁ)。
  • URLはちゃんと規約で決まっている。layout使うときはどうとかもふくめて。
  • DBのMigration機能はDBがMySQLじゃないとちゃんとうごかないとか。

トランザクション境界は、Controllerのアクションだよね。宣言的に引っ掛けられるのかなぁ。