( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

Rails 勉強会東京#31 感想

行ってきました。大森まで。
参加された皆さん、お疲れ様でした。

named_scopeについてくわしく

もろはしさんのセッション。
資料はこれ→ named_scopeについてくわしく - moroの日記

プレゼン資料、説明ともにわかりやすかったです。
JavaのORM(Hibenateやibatis)を常時利用している身からすると、動的にscopeをつなげて検索条件を絞るって機能はかなり革新的だと感じました。

以下メモ。

  • NamedScope -2.1からのARの新機能
  • 検索条件の結果集合に名前を付けて操作できる。
  • with_scopeではfinderメソッドへのsyntax sugarを作ってたらしい。


どんな使い方ができる?

  • たとえば、論理削除に利用
  • scopeに引数を渡せる。 - 第2引数にProcを渡すと、その戻り値のHashを検索条件に加える。動的にscopeの条件を指定できるってこと。
  • 最近流行りのドリルダウン検索とかで活用できそう。


scopeはメソッドチェーンでかけ合わせることができる。

  • 2つの積集合を求める捜査
  • scopeをメソッドチェーンで呼び出すと、クエリを算出してクエリを1回だけ発行する。 →named_scopeがかしこくやってくれてすげぇ。

scopeのもっと突っ込んだ使い方

  • scopeオブジェクトにさらにメソッドを追加できる。
  • name_scopeの第2引数のProc内で定義したメソッドは、定義されたname_scopeの特異メソッドになる。


メソッドチェーンの順番は?

  • あとに読んだ方から順に結合される。
  • Orderやlimitは先に指定したやつのみ有効


User.hot(3)はNamedScopeのProxyオブジェクトを返される?

  • この時点ではSQLは実行されない。
  • irbとかでmethod_missingでinspectした時点で実行される。


scopeはネストできる。メソッドチェーンで呼び出すと…。

  • User.active → Userオブジェクト(AR)がScopeオブジェクト(active)のparent scopeになる
  • User.active.hot → Scopeオブジェクト(active)がScopeオブジェクトhot)のparent scopeになる

Ruby1.9だとlamdaは ->でcoolにかけるらしい

  • デフォルト引数はprocだとかけない(1.8)


デフォルトのscopeはall
ActiveRecord::scope →無名スコープを返す。

  • メソッドチェーンの中で、その場でスコープを作りたい場合に有効。

Rails2.2のi18N

ソースを落としてきて、実際の使い方を動かしながら検証するライブ感が良かったです。
翻訳されたメッセージが出力されたとき、みんな「うぉーっ!!」てゆってた。
この参加している全員が一体になった感が楽しかったです。

以下メモ。

  • まだgetTextの代わりのように動いてはいない。どうする?
  • Rails2.2 9月にリリースされる?
  • i18n.rb → めさシンプル。
  • PJオーナーからメール来てた。日本語用YAMLを提供汁!ってよ。
  • ARのエラーメッセージをi18nで置き換えられたり。
  • ActionMailerもなんかCommitされてる。 →charset指定するくらい。
  • gemで別途installしなくてもActivesupport/vender以下に入ってきてる。→ とりあえず入れてみた?
  • ActiveRecord/validaions 170行目 attr_name とかが使い方の参考になる。


Localize
通貨記号とか日付書式とかを設定ファイルみたいに定義できる
通貨記号の置き場所(前/後)を指定できないのでなんかうまいことやれないか?
漢数字に変換?

定義読み込み application.rbのbefore_filterとかでやっておく。

   I18n.poplulate do
    require lib/locale/locale.rb
   end
   
   I18n.locale = "ja_JP"
   I18n.t 

ARのカラム名のtranslate

  • ja_JP.rbに追加する?
   avctive_record.human_attribute_anmes =>{
    :user =>{
      :name = "名前"
    }


スペースが勝手に入る。

  • はずすオプションがいるよ。


単数形/複数形

  • どっかで設定する。rangeオブジェクトが引数。


backendをgetTextになるとおもろー。

  • i18nは実際にtranslateするbackendの実装を変えることができる
  • getTextでbackendの実相を提供すると今までの資産が使えてウマーじゃね?
  • translate,localizeあたりを実装すればいけそう。
  • やるとRailsGetTextはいらなくなる。
  • viewの振り分けerb.ja_jpなどはActionSupport


実装上いちいちtranslateメソッドを呼び出すのは面倒。

  • 別のテンプレートエンジンで処理すれば…

LT

志村さん

  • RSpecのメッセージのカラーを見やすくする方法


Zevさん

  • saikuroというツール。
  • if caseとかのカウント。
  • Testing。このカウントとUTのケースが一致すればcovrerage100%。
  • カウントを見ればリファクタリングのヒントになる。
  • コアラ?でコピペがわかる。


よしみさん

  • jpmobileの改造。
  • railsから独立して使えるようにした。
  • githubに移った。
  • AC::AbstractRequestの拡張を分割。
  • Rackから使えるように。
  • Murbとかでも使えるかも。



澤田さん

  • Tokyu.rbの活動
  • 自重の無さ。プログラミングファーストw


松田さん

個人的な宿題

  • RSpecの書き方がようわからん。
  • github使ってみる
  • Macbookほしい