この文章は、以下のページの内容を(勝手に)日本語に翻訳したものです。
http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html
http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html
Rolling with Ruby on Rails
(つづき)
コードを書こう
オンラインのクックブックを作って、みんなが自分の好きなレシピを共有できるようにしよう。クックブックで、こんなことができるようにしたい:
- すべてのレシピのリストを表示する。
- 新しいレシピを作ったり、すでにあるレシピを編集したりする。
- レシピをカテゴリで分ける。(たとえば、「デザート」とか「スープ」みたいに)
クックブックアプリケーションは、好きなディレクトリに作ることができる。今回は、c:\rails\cookbook にしよう。文章中に出てくるパスはすべてこのディレクトリを基準にするから、違う場所を選んだ場合は、読み替えてほしい。
からっぽの Rails ウェブ・アプリケーションを作る
Rails は、ランタイム・ウェブ・アプリケーションであると同時に、ヘルパー・スクリプトのセットでもある。ヘルパー・スクリプトは、ウェブ・アプリケーションを作るときにしないといけないことを、自動的にやってくれるんだ。このステップでは、そんなヘルパー・スクリプトの1つをつかって、ディレクトリ構造とファイルを作り、クックブック・アプリケーションをスタートさせよう。
- コマンドウィンドウを開いて、クックブック・アプリケーションを作りたい場所へ移動する。今回はc:\railsだ。
- つぎのコマンドを実行する:rails cookbook
からっぽのウェブ・アプリケーションをテストする
Rails ウェブ・アプリケーションは、事実上どんなウェブ・サーバでも動く。けど、Rail ウェブ・アプリケーションを作るときに一番便利なのは、WEBrick ウェブ・サーバを使う方法だ。WEBrick ウェブ・サーバは、Rails に組み込んである。このウェブ・サーバを使って、cookbook アプリケーションを見てみよう
- コマンドウィンドウで、cookbook ディレクトリへ移動する
- 次のコマンドを実行して、サーバをスタートさせる:ruby script\server
- ブラウザを開いて、http://127.0.0.1:3000/にアクセスする。
Railsアプリケーションのディレクトリ構造
Rails は、決めないといけない事柄を最小限にまで減らして、不必要な作業をなくしてくれる。rails ヘルパー・スクリプトを使ってからっぽのアプリケーションを作ると、アプリケーションのディレクトリ構造ができあがる。Rails は、どこに必要なものがあるか知ってるから、わざわざRails にそれを教えてあげる必要はない。"no configurasion files"を思い出そう!
やらなきゃいけないことは、c:\rails\cookbook\app サブディレクトリの中にファイルを作ったり編集するのがほとんどだろう。下にリストアップしておこう。
- controllers サブディレクトリは、Railsがコントローラ・クラスを探すところだ。コントローラは、ユーザーからのウェブ・リクエストを扱う。
- views サブディレクトリは、ディスプレイ・テンプレートを保存するところだ。ディスプレイ・テンプレートは、アプリケーションからデータを取ってきて、HTMLに変換して、ユーザーのブラウザに返すんだ。
- models サブディレクトリは、モデル・クラスを保存して、アプリケーションのデータベースに保存されているデータをラップするところだ。他のほとんどのフレームワークでは、この部分が退屈で乱雑で冗長でエラーの元になることがよくあるんだけど、Rails は、それをシンプルにしてくれる!
- helpers サブディレクトリは、ヘルパー・クラスが保存される。ヘルパー・クラスは、モデル、ビュー、コントローラの各クラスをアシストしてくれる。このおかげで、モデル、ビュー、コントローラ・クラスのコードが、小さく、的を絞った、片付いたものになるんだ。
コントローラとURL
すぐに、cookbook データベースを作って、アプリケーションを作り始めよう。まず、コントローラがどのように働いて、どのようにURLがコントローラのメソッドに対応するのか理解しよう。
コントローラ・クラスは、ユーザからのウェブ・リクエストを扱う。リクエストのURLは、コントローラ・クラスとその中のメソッドに対応するんだ。これは、どんな風になっているんだろう?
ウェブ・サーバを動かしているコマンドウィンドウを開いたまま、もう1つコマンドウィンドウを開いて、c:\rails\cookbookへ移動しよう。
別の Rails ヘルパー・スクリプトを使って、新しいコントローラ・クラスを作ろう。コマンドウィンドウで、つぎのコマンドを実行する:
ruby script\generate controller MyTest
ruby script\generate controller MyTest
これは、my_test_controller.rbっていうファイルを作ってくれるんだ。このファイルには、MyTestControllerクラスのための定義のひな形が書いてある。
c:\rails\cookbook\controllers ディレクトリで、このファイルを右クリックして、編集を選ぼう。このファイルは、図11のようになっているはずだ。
もし、存在しないものをブラウズしようとするとどうなるだろう? http://127.0.0.1:3000/garbage/ を見てみよう。図12のようになるはずだ。
あまりビックリしないように。次は、図13のように、http://127.0.0.1:3000/MyTest/を試そう。
ふーん。こんどは、違う結果になった。URLの"MyTest"の部分は、新しく作ったコントローラに対応してるんだ。Railsは、このコントローラの中の"index"という名前のアクションを探そうとしたけど、見つからなかったみたい。
それじゃ、直そう。図14のように、コントローラ・クラスに、"index"メソッドを追加しよう。
ブラウザを更新すると、図15みたいに表示されるはずだ。
http://1270.0.1:3000/MyTest/index としても、同じ結果になるとおもう。
つぎは、コントローラに、別のアクションを追加しよう。図16のように、"dilbert"メソッドを追加してくれ。
http://1270.0.1:3000/MyTest/dilbert を見ると、図17みたいになるよね。
これでわかったとおもう。
つぎは、データベースを作って、実際にcookbookアプリケーションを作っていこう。