ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

「RailsによるアジャイルWebアプリケーション開発」12章まで読了

/info/who_bought/6 → HTML
/info/who_bought/6.xmlXML
/info/who_bought/6.html → HTML
おぉー!RESTfulっぽいよ。

これをやるには、config/routs.rbに

  map.connect ':controller/:action/:id.:format'

みたいな設定が必要なようなのですが、Rails2.0ではデフォルトで設定されてました。

というわけで、自由課題。

クライアントがXMLレスポンスをリクエストしたときにはXMLの商品カタログを返すように、元のカタログ表示を変更してみましょう。

まずは、store_controller.rbのindexメソッドに以下を追加。

    respond_to do |format|
      format.html
      format.xml
    end

でもって、app/views/store/index.rxmlを追加。

xml.product_list do
  for product in @products
    xml.product(:id => product.id) do
      xml.title(product.title)
      xml.description(product.description)
      xml.price(product.price)
    end
  end
end

これで動くかと思いきや、

Routing Error

No route matches "/store/index.xml" with {:method=>:get}

エラー発生。
config/routes.rbに以下を追加。

  map.connect ':controller/:action.:format'

これで無事
http://localhost:3000/store/index.xml
にアクセスしてxmlも表示できるようになりました。

rxmlテンプレートを使って通常のHTML(XHTML)レスポンスを生成してください。
どのような利点と欠点があるかについても考えてみましょう。

試しに、login#list_usersをxml化することを思いつく。
とりあえずapp/controllers/login_controller.rbのlist_usersメソッドに以下を追加

      respond_to do |format|
        format.html
	format.xml {render(:layout => false)}
      end

※後で発覚したのだが、レイアウト(products.xml.erb)がないとか怒られるので、xmlの場合はレイアウトなしの指定にしてある。
でもって、views/login/list_users.rxmlを作る。

xml.ul do
  for user in @all_users
    xml.li(:id => user.id) do
      xml.text!(user.name)
    end
  end
end

これで、
/login/list_users.xml
にアクセスすると、一応できてるっぽい。

こういう風にする利点は、HTMLでそのまま表示できる、かつ、いわゆる整形式になっているためにプログラムから扱いやすいという両面を備えることができるということでしょう。つまり、ブラウザとWebサービスクライアントの両方を一度にサポートできるという点ですね。まさにXHTMLの利点そのままって感じもしますが。

欠点って何かあるのかな?
erbよりrxmlの方が書きづらいってところかなあ。

プログラムによってHTMLレスポンスを生成する場合は、Markabyについて調べてみましょう。

これ
http://redhanded.hobix.com/inspect/markabyForRails.html
のことらしい。
rxmlに似た感じの構文で書けるってことですかね。
Jakarta ECSを思い出しましたよ。
http://jakarta.apache.org/ecs/index.html

クレジットカードとPayPalの処理、フルフィルメント、クーポン券の発行、RSSのサポート、ユーザアカウント、コンテンツ管理などをDepotアプリケーションに追加してみてください。

うーん、だいぶ投げやりな感じじゃないか?(汗
RSSサポートはやってみる価値あるかも。もうちょい先に進んでからやるかも。やらないかも。
ちなみに、ヒント(http://pragprog.wikidot.com/task-g-one-last-wafer-thin-change)には何も書いてありませんでした。。

「εに誓って」読了

εに誓って (講談社ノベルス)

εに誓って (講談社ノベルス)

森博嗣Gシリーズの4巻。
作中の人物達も、このギリシャ文字続きに不信感を抱いてきた模様。
やっぱり真賀田四季が裏ボスなのか?
始まりは、山吹五月と加部谷恵美が東京から那古野に帰るバスの中で、東京ばななでなごんでいるところに、バスジャックが発生して大変なことになるわけですが、バスの中の様子、警察と一緒に行動している萌絵の様子、佐々木夫人の様子(これポイントかも)などなどが描写されているわけです。
が、最後のところ「うゎ、やっべ、やっちまった!」と思ったら、「え?そうなの!?」っていう展開になり、「うわまただまされた!」っていうことになりました。。
あんまり悔しいので、最初の方読み返してみたら、見事にボカしてあるんですねえこれが。
よく行間を読めとか言われますが、森博嗣作品の場合は、行をいろんな方向から読めですかね。いや、ほんと参りました。


そういや、ギリシャ文字ってどんなのあったっけ?
と思って探したら、速攻見つかりました。
http://e-words.jp/p/r-greek.html
φ → θ → τ → ε → λ → η
ときて、特に意味のある順番には見えませんが、次はなにがくるんでしょうね。
ν(ニュー)とかきたら、ちょっとガンダムっぽい(汗

Remember The Milkも使ってみた。

これも基本1件につき1行。
一応ノートという形でテキストエリアをサポートしているが、行を選択してノートタブをクリックするという面倒な操作を行わないと見れない。
これも僕の要件(ってはっきりしないけど)からするとイマイチだなー。
やっぱり、今のところはWhiteBoardイチオシ。