« 2009年01月 | メイン | 2009年03月 »

2009年02月 アーカイブ

2009年02月04日

Merb用のrakeタスクを記述する

Merb用のrakeを記述する場合Rakefileに書いてはならず、 lib/tasksに タスクを記述したファイルに.rakeという拡張子を付けて配置しておくとそのファイルを読んでくれるようです。

ただし、タスクをそのまま書いただけではMerbのライブラリがまだロードされていませんので、例えばDataMapperのモデルクラスを使おうとするとエラーになります。 タスクの中でMerbのライブラリ各種を利用する場合は、 タスクの依存に :merb_env を入れておくと、merb -iで起動する環境と大体同じになるようでした。

  task :create_user_error do |t|
# これは"User"が見つからないためエラー。
    User.create(:name = "foo") 
    ....
  end

  task :create_user  => :merb_env do |t|
    User.create(:name = "foo")
    ....
  end




                              

2009年02月25日

DataMapperのバリデーションでのcontextのつかいかた

DataMapperのバリデーションではcontextという概念が導入され、 同じモデルでも場合によってバリデーションの仕方を変更できるようになりました。 DataMapperのバリデーションはdm-coreではなく、dm-validationモジュールで提供されています。

使い方はvalidatorを指定するときに:context オプションを指定しておき、モデルインスタンスのvalid?やsaveを利用するときに引数でコンテキスト名をシンボルで渡すだけです。

これにより、ActiveRecordで面倒だったWizardやstateによって異なるバリデーションなどが割合やりやすくなっています。

続きを読む "DataMapperのバリデーションでのcontextのつかいかた" »