蛇足感がありますが、ちょっと補足しておきます。

Rails勉強会@東京、面白かったんですが。

そもそも何が問題かというと、 Commentsコントローラが担当すべきCommentリソースの処理を、 Postsコントローラで書かなきゃいけないのが格好わるいのでなんとかしたい、という事なんです。

Child belongs_to Parent な関係にあるChildリソースを描画する時は、 多くの場合Parentの描画を伴う事になるので、 そもそもControllerの仕組みが入れ子関係を上手く扱えるようになっているとありがたいのだけど。

View上で階層関係になっているものを、フラットなControllerで処理するという事がそもそも無理があるのかもしれない。 Controller側も階層化させるか、さもなくばセッション中に言ったように、 子供のリソースはAjaxで処理するという形にするのが奇麗かな。

posted by Png genki on Mon 19 Jan 2009 at 20:44

[追記 2009.01.20]script/generate featureの項を追加

moroさんの記事を読んで、Cucumber wktk!と思っていたのでtry

http://d.hatena.ne.jp/moro/20081112/1226486135
http://d.hatena.ne.jp/moro/20081118/1226977015
http://gist.github.com/26024

こちらの導入手順を参考しました:
http://wiki.github.com/aslakhellesoy/cucumber/ruby-on-rails

必要なgemをinstall

  • rspec
  • rspec-rails
  • cucumber
  • webrat

ローカルには0.1.15を入れたのですが、念のため0.1.13で依存しているというgem:aslakhellesoy-webratもinstallしました。

   1    gem sources -a http://gems.github.com
   2    sudo gem install aslakhellesoy-webrat

Webratを使うようにCucumberのenvに書く

${RAILS_ROOT}/features/support/env.rb

   1  require "webrat"
   2  Webrat.configure do |config|
   3    config.mode = :rails
   4  end     

script/generate feature

moroさんところのcucumberの構造辺りで紹介されているgeneratorでfeatureやstepsを生成:

   1  $ ruby script/generate feature Product

Webratの仕様が変わってた

moroさんのgistを下記に保存して使用し始めたのですが、

   1  ${RAILS_ROOT}/features/step_definitions/webrat_ja_steps.rb

細かい仕様が変更されていました:
ディレクトリstep_definitionsの位置も変わっているのに加えて、visits => visit、fills_in => fill_inなどが変更されていました。ただ、前もって調べなくても、rake featuresすると仕様変更された旨のmessageが出るので安心です。

   1   visit home_path 
   2   fill_in "Email", :with => "good@example.com"

またpendingされたstepには、下記のようにsnippetsが出力されて便利だなぁと思いました:

   1  You can use these snippets to implement pending steps which have no step definition:
   2  When /^パラメータを入力する product_comment\[body\]=dummy comment!$/ do
   3  end

Refs

http://moriq.tdiary.net/20081022.html
http://d.hatena.ne.jp/hs9587/20081231/1230691812
http://barkingiguana.com/2008/11/11/getting-started-with-story-driven-development-for-rails-with-cucumber

posted by Png satoko on Mon 19 Jan 2009 at 15:44

Merbでは、URLとアクションのマッチングをconfig/router.rbの中で定義しますが、ちょっと複雑なパターンマッチングを行いたい場合は、以下のように正規表現を使ってRouteを定義する事ができます。

   1  match(%r{^/gems/(.*)$}).to(
   2    :controller => 'gems', :action => 'show', :name => "[1]")

正規表現にマッチしたグループを、パラメータ側から"[1]"のように後方参照する事ができます。

posted by Png genki on Mon 19 Jan 2009 at 10:56
Contents
入れ子のリソースに関する問題について
Cucumber 0.1.15を動かす
Merbで正規表現を使ったRouteを記述する方法
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
KingofSmack: Here also good reads for this mobile applicatio... '14-5
Spencer: You don't have to re-compile it, this version w... '14-4
staiano: Any chance we can get a recompile for 10.9? '14-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ