ruby

「Agile Web Development with Rails 勉強記」まとめ

Chapter 7 "Task B: Catalog Display" Chapter 8 "Task C: Cart Creation" 8.1 Sessions, 8.2 More Tables, More Models, 8.3 Iteration C1: Creating a Cart 8.4 Iteration C2: Handling Errors, 8.5 Iteration C3: Finishing the Cart Chapter 9 "Task D: …

AWDwR "Chapter22 Deployment and Scaling" つづき

帰省先から書いてます:-)。 Scaling: The Share-Nothing Architecture Railsアプリケーションをスケールする際のコンセプトがShare-Nothing Architecture。Share-Nothing Architectureにより状態の管理をWeb層やアプリケーション層でなくデータベースやネッ…

AWDwR "Chapter22 Deployment and Scaling"

この章、英語わかりにくひ…。 Picking a Production Platform まずはWEBrickとApacheとlighttpdの3つのWebサーバについて。WEBrickはRubyにバンドルされているピュアRubyのWebサーバで、特に速くはないしスケーラブルでもないけど実行させるのがメッチャ簡単…

AWDwR "Chapter21 Securing Your Rails Application"

2005年もあと5日。Chapter21はセキュリティについて。 SQL Injection フォームなど外部からのデータを直接SQL文の中で使ったりすると悪い人に任意のSQL文が実行されちゃうよというのがSQLインジェクション。例えばこんな風にしていると危ない。 Email.find(:…

AWDwR "Chapter20 Web Services on Rails"

Chapter20を書いた人&Action Web Serviceのコード書いた人は南アフリカの人だって。Chapter18書いた人はオーストリアだし、DHHはデンマークだし、グローバルだね。 Action Web Serviceは長いんでAWSと省略するよ。 What AWS Is (and What It Isn't) AWSではS…

AWDwR "Chapter19 Action Mailer"

目標、年内読了!Chapter19行きますよ。 Sending E-mail まずはメールを送信する設定をしなきゃね。development, testing, productionで同じ設定を使う場合はconfig/environment.rbに設定し、別々に設定したい場合はconfig/environments以下の設定ファイルに…

AWDwR "Chapter18 The Web, V2.0"

今、巷で話題のWeb2.0ですよ!! Intorducing AJAX は、みんな知ってるからいいよね:-)。 The Rails Way Railsには最初からAJAXのサポートが組み込まれているからWeb2.0もバッチリ。で、具体的に言うと prototype, effects, dragdrop, controlsのJavaScriptの…

AWDwR "Chapter17 Action View" つづきのつづきのつづきのつづき

いよいよChapter17大詰め。 Caching, Part Two Chapter16でキャッシュの話があったけど、Railsにはさらにページの一部分をキャッシュする機能があって、ビューのテンプレートの一部をcache()のブロックで囲んでおくとその部分だけキャッシュしてくれる。 <%=…

AWDwR "Chapter17 Action View" つづきのつづきのつづき

Chapter17つづき、いきますよ。 Layouts and Components ビューにもDRY原則に則って重複を避けるためのレイアウト、パーシャルズ、コンポーネントという仕組みがある。まずはレイアウト。レイアウトのテンプレートは以下のような感じ。 <html> <body> <%= @content_for_l</body></html>…

AWDwR "Chapter17 Action View" つづきのつづき

やべっ、また半年ほどサボるところだったよ:-)。 Form Helpers 送信されてきたフォームのパラメタは以下のようにparamsハッシュにマップされる。 id=123 #=> {:id => "123"} user[name]=Dave #=> {:user => {:name => "Dave"}} user[address][city]=Wien #=>…

AWDwR "Chapter17 Action View" つづき

ここ3日ほどメッチャチカレマチタヨ…。ちょっと間があいちゃったけど気を取り直して続き。 Formatting Helper Railsにはビルトインされたヘルパメソッドがたくさんあるので紹介するよ。詳しくはRDocを見てね。 <%= distance_of_time_in_words(Time.now, Time…

AWDwR "Chapter17 Action View"

11月中に読み終わらなかったよ。ってこれだけサボってちゃなぁ…。しかもChapter17は46ページもあるし…。奥さんAction Viewですよ。 Templates テンプレートはデフォルトではapp/views/[コントローラ名]/[アクション名+拡張子]になるんだけど、以下のように直…

AWDwR "Chapter16 Action Controller and Rails" つづきのつづき

まだまだActionController。ちょっと飽きた… 嘘:-)。 Filters and Verification フィルタを使うとアクションの前や後などで処理を行なうことができるのよ。before, after, aroundの3種類があるのよ。まずはbeforeフィルタとafterフィルタ。コントローラ内の…

AWDwR "Chapter16 Action Controller and Rails" つづき

Action Controller つづきっ! Cookies and Sessions クッキーはcookiesというハッシュで読み書きできる。 cookies[:the_time] = Time.now.to_s cookie_value = cookies[:the_time]クッキーを書き込む際に指定できるオプションは以下のとおり。 :domain クッ…

AWDwR "Chapter16 Action Controller and Rails"

Action Controller 行きます。 Routing Requests config/route.rbにリクエストされたURLをどのようにコントローラやアクション等にマッピングするかを記述する。例えば map.connect ':controller/:action/:id'とすると、store/add_to_cart/123というURLは @p…

AWDwR "Chapter15 More Active Record"つづき

もっともっとActive Record! Callbacks Active Recordのライフサイクルのいろいろなイベントをフックできるよ。新規レコード保存時のコールバック before_validation before_validation_on_create after_validation after_validation_on_create before_save…

AWDwR "Chapter15 More Active Record"

もっとActive Record! もっとアップルのiMac G5欲しい! Act as DBのデータをリスト構造やツリー構造のように扱うこともできるよ。ステキじゃなーい!まずリスト構造の場合はテーブルにpositionというカラムを定義してモデルを以下のように定義。 class Pare…

AWDwR "Chapter14 Active Record Basics" つづき

あー、間が開いちゃった…。さて、前回の続きで"Relationships between Tables"から。「こっちのテーブルがあっちのテーブルに関連付けられていて、そっちのテーブルがこっちのテーブルを参照して…」とややこしくてしかも英語だから読むのにチカレマシタヨ。 …

AWDwR "Chapter14 Active Record Basics"

いよいよActive Recordですよ。 テーブルとクラス DHHの趣味でテーブル名はモデルのクラス名の複数形と仮定しているけど、嫌な場合は ActiveRecord::Base.pluralize_table_name=falseとすればモデルのクラス名とテーブル名を一緒にできる。また自分でテーブ…

AWDwR "Chapter13 Rails in Depth"

ディレクトリ構造 libディレクトリは自分で作ったライブラリ、vendorディレクトリはサードパーティのライブラリを入れましょう。componentディレクトリについては詳しくはChapter17で、ってそんなん多いなぁ。 設定 実行時環境(development,test,production…

AWDwR 12.7まで

12.5 TDD。ふつーにTDDの話。「コードは宿題なのでちゃんとやっとけよ!」って…、サボってやってません。12.6 テストをRakeでやるよ。いやぁ、いたれりつくせりだね。 rake test_units # モデルのテストを実行 rake test_functional # コントローラのテストを…

AWDwR 12.4まで

まずは、コントローラのテスト。ふつーに書けばいいみたい:-)。リクエストを発行するメソッドはこんな感じ。 get :index post :login, :user => {:name = 'enkimi', :password => 'enkimi'}で、アサーションはこんな感じ。 assert_response :success assert_…

AWDwR 12.2まで

さーて、いよいよテストです。Chapter12はMike Clarkという人が書いてるんだけど、英語わかりにくい…。テストにはモデルのテストとコントローラのテストがあって、モデルのテストコードはtest/unit以下に、コントローラのテストコードはtest/functional以下…

AWDwR 11まで

まずはChapter10DBのカラムにdatetime型,date型を使う場合はカラム名を「なんとか_at」「なんとか_on」としましょう。何かいいことあるらしい:-)。詳しくはChapter15で。ビューで render(:partial => "order_line", :collection => @pending_orders)とすると…

AWDwR 9まで

今回は注文の登録だよ。フォームからの入力をモデルに突っ込むには @order = Order.new(params[:order])とする。自動ではセットしてくれないのね。render()というのはservletのフォワードのイメージかな。通常はrender()を書かなくてもアクションの実行後に…

AWDwR 8.5まで

ゆっくりとしたペースで進んでおります。昨日はサボっちゃったし…。今回はエラーハンドリングとヘルパー。かゆいところに手が届くというか、よく考えられてるなぁ。1つのコントローラクラス内に複数アクション書けるというのは見通しが良くていいね。あ、そ…

AWDwR 8.3まで

ショッピングカートを題材にセッションのお勉強。セッションはコントローラの中でsessionというハッシュで参照可能。が、sessionに@がついてないけどsessionはローカル変数なの? セッションに格納するクラスはapplication.rbに書いておかないといけないらし…

Ruby on Railsはじめました

Ruby on Railsはじめました。てゆーか、その前にRubyはじめました。 たのしいRuby―Rubyではじめる気軽なプログラミング作者: 高橋征義,後藤裕蔵,まつもとゆきひろ出版社/メーカー: ソフトバンククリエイティブ発売日: 2002/03メディア: 単行本購入: 3人 クリ…