読者です 読者をやめる 読者になる 読者になる

南極の図書館

ペンギンが寝ていた…。

RailsによるアジャイルWebアプリケーション開発 01

Rubyと並行してRailsの勉強を行っている。
RailsによるアジャイルWebアプリケーション開発」の第一部までのメモ。(〜P46)

MVC

モデル ActiveRecord

アプリケーションの状態を保持する。一時だったり永続(DB)だったり
また、値の門番の役割を行う。20以上のみ許容、など。
何をすべきかを受け取り、それをどのように実行すべきかを知っている。


SQL
RDBは数学の集合論で、オブジェクトはデータと操作
→データ中心、PG中心の二つの考え方ができた


ORM
DBtableをClassにマッピング
テーブル名のクラスがある。テーブルの各行はオブジェクトに対応する。
テーブルの列は、オブジェクトの属性に対応する。

ビュー Action Pack

データ入力を提供する。
表示した時点で役目は終わる。
ERb:ビュードキュメントにRubyコードを埋め込む。
RJS:JavaScriptの断片をサーバ側で作成する。

コントローラ Action Pack

調整役
なお、コントーラの前にルーティングが入る。
何をすべきかをモデルに伝える。ロジックの中枢。
人間にとってわかりやすいURLの処理、キャッシュ、ヘルパーモジュール、セッションの管理。

開発環境

ツール

RailsにはIDEは基本的に不要。リファクタリングのサポートくらいにしか必要が無い。
バージョン管理はGitなどで。
エディタはEmacsVimTextMateなどで。HtmlならDreamweaverなどもあり。
必要な要素としては
・erbの書式に対応
・自動インデント
・1〜2回の入力でメソッドのスケルトンを作成
・分散したファイルを移動できる
・補完機能があること


WindowsならE-TextEditor
AptanaRadRailsはAptanastudioとEclipsで使える。
NetBeansIDE
jEditKomodo、Arachnoなど。

デスクトップ

コードの記述とテストがすぐにできること。
エディタウィンドウとブランザウィンドウを開いたままにする。
ログ監視のためターミナルもひらいたままにする。tail -fでログが最新の内容にスクロールされる。場所を取らないように小さく。
APIドキュメントはブラウザで。api.rubyonrails.org

Railsのバージョン

gem update railsでアップデート
gem cleanipで古いバージョンのライブラリを削除
最上位ディレクトリで、rake rails:updateで、追加したライブラリ、スクリプトなどをアップデート。

Railsアプリの作成

適切なディレクトリ配置が必要。railsコマンドを使う。

ファイルの説明

script/server
WEBrickというスタンドアロンのWebサーバを起動するスクリプト。
>ruby script/server
で、起動する。シャッドダウンはCtrl+C

script/generate

ruby script/generate controller Say
で、say_controller.rbが作成される。たとえばアクションをhelloとしたとき、
/say/hello でアクセスできるようになる。
sayはSayでもSaYでもsaYでもいけるが、helloは小文字オンリー。

erb

末尾を -%> とすることで、後続の改行文字を出力から削除する。
ヘルパーメソッド<%= h(~~~~) %>とすると、&など、展開されてから渡される。

モード

開発モード(development)では新しいリクエストがくるとソースが自動でリロードされる。
本番ではもちろん無効にするべきだ。(productionにするといい)
詳しくはP587

見本アプリ作成

「時刻はデータであり、データはコントローラからビューに渡されるべき」
viewは装飾がメインと考える。

Railsアプリの基本的な流れ

~~~/cont/act/というURLの場合。
contをコントローラ、actをアクションとみなして、cont_controllerを探しactメソッドを探す。
act内で定義されているインスタンス変数を格納する。
app/viewディレクトリでcontというものを探し、その中でact.html.erbを探す
ERbを使ってact.html.erbを展開する。
結果をブラウザに返す。

その他

・link_toメソッド
<%= link_to "string", :action => "actname"%>
とする。

・ヘルパー
テンプレートの作成を簡単にするためのメソッド

・%と%=について
展開しないforやendは=をつけない。

<% for file in *files %>
  <%= file %></br>
<% end %>


ここまでで第一部(〜P46)