#counter
#setlinebreak(on)
本ページが気に食わない場合は削除願います>日向殿
 ありがとうございます!
 学びやすくなって嬉しいです。(日向)
随時わかりにくい箇所などをアップデートしたいので、皆様の意見を受け付けるためのコメント欄をつけたいのだけれどどうしたらいい?というかつけて>日向殿

 作りました!コメント欄。
 各章につけたほうがいいですか?
 #comment
 でコメント欄できます。

----

#contents
** はじめに [#l7127c41]
どMでないならRailsを使え。

** 前提となる知識 [#pcd796bd]

ここでRailsでの開発を行ううえで必要となる基本的な考え方を示す。

*** MVC [#ebaa7c8a]
http://ja.wikipedia.org/wiki/Model_View_Controller

*** DRY [#d0f003d0]
http://ja.wikipedia.org/wiki/Don%27t_repeat_yourself

*** CoC [#t6805da4]
http://ja.wikipedia.org/wiki/%E8%A8%AD%E5%AE%9A%E3%82%88%E3%82%8A%E8%A6%8F%E7%B4%84

 命名付与基準について
 Railsでは開発者が一定の命名付与基準に従うことにより、一般に設定事項が必要となる様々な場面で、
 その設定を省略することを可能としている。よって以下の命名付与基準に従って開発するべきである。

|クラス名|キャメルケース|
|メソッド名|スネークケース|
|変数名|スネークケース|
|テーブル名|スネークケースで複数形|
|行を表す変数名|テーブル名の単数形|
|ファイル名|スネークケース|

キャメルケースやスネークケースの説明は[[http://ja.wikipedia.org/wiki/キャメルケース]]へ。


** インストール [#j6a4c3fb]
rubyをインストールし、gemをインストールし、gemでrailsをインストールするのが定石。依存関係があすその他のパッケージもgemがインストールしてくれる。

Leopard以降?のMacならrubyもgemもインストール済み。gemをアップデートしてrailsをインストールすればいい。

*** rubyをインストール [#ic4a3c4c]
http://www.ruby-lang.org/ja/

*** gemをインストール [#sb3b99c9]
http://rubyforge.org/projects/rubygems/

インストール済みのgemのアップデートは以下のコマンド実行

 $ gem update --system


>>> ちなみにgemってなに?・・・rpmとかaptみたいなもんだ。わかるよね?


*** railsをインストール [#p1060cb7]
http://rubyonrails.org/

** 全体像を眺める。 [#e7caf672]

全体像が判ったほうが理解が早い。これ常識。


*** プロジェクトを作る [#o68f5115]
 $ rails プロジェクト名

指定したプロジェクト名のディレクトリができ、その下にたくさんのファイルやフォルダが生成される。
以降この指定したプロジェクト名のディレクトリ配下での作業を前提とする。
このこの指定したプロジェクト名のディレクトリを毎回説明するのが面倒なので、$(RAILS_ROOT)と書くことにする。

*** 開発用サーバを起動する [#dbfd1695]
 $ cd $(RAILS_ROOT)
 $ ruby script/server
rubyでできたWebサーバが起動する。デフォルトではhttp://0.0.0.0:3000/でアクセスできる。Webブラウザでアクセスして確認するべし。

*** 足場(scaffold)を作る [#n862f7b0]

Webアプリが本質的にWebというIFを使ってDBを操作するものであると考えると、DBのテーブル名(モデル名)とそのカラムの情報を与えてやれば、そのテーブルのCRUDを実行できるWeb超単純だが必要最低限の機能を実現したWebアプリを自動生成できるはず。それを実現するのがこのscaffold機能。

 $ ruby script/generate scaffold モデル名の単数形 カラム名1:型名1 カラム名2:型名2 ・・・

指定できる型の名称を以下の表に示す。

|型名|概要|
|string|文字列|
|boolean|真偽値|


 もちろん、そんなに単純なパターンだけではなく、ControllerやModelを個別にスクラッチで書く方法も存在する。

*** DBを生成する [#r0947634]

scaffoldはWebページを作るが、DBのスキーマは生成してくれない。それを生成するのが以下のコマンド。

 $ rake db:migrate


>>> ちなみにrakeってなに?・・・Makeみたいなもの。中身がrubyになっているのでやりたい放題できる。


*** Webブラウザで確認する [#t7ef2627]

http://0.0.0.0:3000/モデル名の複数形
にアクセスすると、いろいろできるページにたどり着く。

*** いじりたおす [#b08d8a2c]
scaffoldで生成したファイルたちをいじって気が済むまで格好よくする。
いじるファイルは主にこのへん。配置されたディレクトリの名称からわかるように、MVCの各要素を実現している。

 $(RAILS_ROOT)/app/controllers/*.rb
 $(RAILS_ROOT)/app/models/*.rb
 $(RAILS_ROOT)/app/views/*/*.html.erb
 $(RAILS_ROOT)/public/stylesheets/scaffold.css

*** 試す [#x768ce06]

上記の情報をもとに超シンプルタスク管理ツールと作ってみる。

 $ rails Todolist
 $ cd Todolist
 $ ruby script/generate Task name:string compflag:boolean
 $ rake db:migrate
 $ ruby script/server

あとは同じマシンでhttp://0.0.0.0:3000/Tasks/にアクセスすればなにかできていることがわかる。

** ひとつずつみてみる [#o64d33a5]

*** Model [#mdd01d56]
DBを


*** マイグレーション [#f59543c2]


*** Controller [#ec0e6be6]

MVCの定義が示すとおり、ユーザからの要求を受け取って、Modelからデータを取得し、適切なViewを選択して表示を要求する機能を表す。

 $ ruby script/generate controller コントローラ名

*** View [#b57416e5]

ユーザに対し、スクリプトの記述に基づいてHTML生成を行う機能。
そのスクリプトは3種類あり、Webアプリ全体で共通的に表示する内容を記述する「レイアウト」と、Webアプリの機能毎に表示内容を記述する「テンプレート」と、レイアウトやテンプレートに埋め込んで使用する「部分テンプレート」が含まれる。



----

**コメント [#hc1d1ad1]
- これ以上なにを書いたらいいのかわからなくなってきました。目次書いてください。 -- [[o]] &new{2009-09-14 (月) 22:48:01};
- KE7zma  <a href="http://asamjzjiocyk.com/">asamjzjiocyk</a>, [url=http://ohuycavnqyfz.com/]ohuycavnqyfz[/url], [link=http://pwiwthklgodw.com/]pwiwthklgodw[/link], http://fpxkqpixtkca.com/ -- [[rsxydgy]] &new{2010-03-09 (火) 09:29:37};
- KE7zma  <a href="http://asamjzjiocyk.com/">asamjzjiocyk</a>, [url=http://ohuycavnqyfz.com/]ohuycavnqyfz[/url], [link=http://pwiwthklgodw.com/]pwiwthklgodw[/link], http://fpxkqpixtkca.com/ -- [[rsxydgy]] &new{2010-03-09 (火) 09:30:11};
- Head First Rails――頭とからだで覚えるRailsの基本 http://www.oreilly.co.jp/books/9784873114385/  --  &new{2010-03-30 (火) 13:06:35};

#comment
----
-[[プログラミング]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS