Rolling with Ruby on Rails - Japanese Translation - p2

by tanabe on June 05, 2005

Pages: 1, 2, 3, 4, 5

実際に作ってみよう

それでは、実際に作ってみよう。作るのは、オンライン・クックブックだ。皆の好きな料理のレシピを保存して、共有できる。

どんな機能があるかと言うと、

  • すべてのレシピを一覧表示する
  • レシピの新規登録と既存のレシピの編集
  • レシピごとのカテゴリー分け機能(”デザート”とか”スープ”とか)

アプリケーションを作るときには、どのディレクトリでも好きなところを使うことができるが、この記事では c:\rails\cookbook 配下で作業をした。以降で出てくるパスはこのフォルダを基準としている。別のフォルダを使う人は、今後出てくるパスを適宜読み替えてほしい。

空のRails Webアプリケーションを作る

Railsは、WebアプリケーションフレームワークのランタイムとWebアプリケーションの作成を支援するスクリプト群で構成されている。 ここでは、全体のディレクトリ構成や、cookbook アプリケーションの雛形となるファイルを作成するために、このスクリプトを使ってみる。

  1. コマンドプロンプトを開き、アプリケーションを作成したいフォルダへ移動する。(ここでは、 c:\rails )
  2. コマンドを実行する。

    rails cookbook


    これで、cookbook のためのサブディレクトリが作成される。このサブディレクトリには、Rails の雛形のためのフォルダやファイルなどが含まれている。

A newly created Rails application directory
Figure 6. 新しく作られたRails applicationのディレクトリ

Rails の雛形を動かしてみる

Railsはだいたいどんなwebサーバー上でも動作するが、Railsアプリケーションを作るのに一番簡単なのはビルトインされているWEBrick web サーバーを使うことだ。さっそくサーバーを起動して、cookbookアプリケーションを見てみよう。

  • 開いているコマンドプロンプトから、 c:\rails\cookbook へ移動する。
  • コマンドを実行してサーバーを起動する(Figure 7.参照)

    ruby script\server
  • ブラウザを開いて http://127.0.0.1:3000/ を見てみる。うまくいっていれば、Figure 8.のような画面になっているはずだ。[ 筆者注:ここまで記事と一緒に実際に試していない人は、このリンクが表示されないだろう。でも、慌てないでほしい。127.0.0.1はローカルマシンを示す指定アドレスだからだ。]

starting the WEBrick server
Figure 7. WEBrickサーバーを開始する

これからの作業でも使用するので、WEBrick web サーバーを起動した画面は開いたままにしておこう。

the Rails default page
Figure 8. Railsのデフォルトページ

Rails アプリケーションのディレクトリ構成

Railsではあなたが決めなければならないことをなるべく少なくし、不要な作業をしなくていいようになっている。さっきアプリケーションの雛形を作るためにRailsの支援スクリプトを使ったときに、スクリプトはアプリケーションのためのすべてのディレクトリ構造を構築してくれている。(Figure 9.参照)この構造の中でどこにどんな必要なものがあるのかをRailsが知っているので、あなたがRailsに指定してやる必要はない。設定ファイルは不要だって言ったのを覚えているかい?

a Rails application directory structure
Figure 9. Railsアプリケーションのフォルダ構造

Railsによる開発でのほとんどの作業は c:\rails\cookbook\app 配下のフォルダでファイルを作ったり、編集したりすることになる。一連のフォルダの使い方をざっと説明しよう。

  • controllersフォルダはRailsがcontrollerクラスを探しに行くところだ。controllerは、ユーザーからのwebリクエストを扱う。
  • viewsフォルダには表示用のテンプレートが入っている。このテンプレートは、アプリケーションによって動的にデータを埋め込まれ、HTMLへと変換され、ユーザーのブラウザへと返される。
  • modelsフォルダはアプリケーションのデータベースに蓄えられているデータを形作り、ラップするクラスが入っている。ほとんどのフレームワークでこのデータを扱う部分はとても複雑・冗長・雑多でエラーを含みがちになるものだが、Railsは画期的なシンプルさで解決している。
  • helpersフォルダにはmodel, view, controllerの3クラスを補助するクラスはなんでも入れられる。これがあることでmodel, view, controllerのコードを小さく、範囲を絞り、まとまったものにしてくれる。

ControllerクラスとURL

それじゃあさっそくcookbookデータベースを作成して、アプリケーションを作り始めよう。まずは、Railsではcontrollerがどんな風に動作するのか、そしてURLがcontrollerのメソッドとどのようにマッピングされ実行されるのかを理解することが大事だ。

controllerクラスはユーザーからのwebリクエストを扱う。リクエストのURLがcontrollerクラスとそのメソッドにマッピングされている。どうやって動作しているんだろう?

開いてあったコマンドプロンプトのウィンドウはwebサーバーを起動したままにしておいて、二つ目のコマンドプロンプトを開こう。そして、アプリケーションの基本のディレクトリ c:\rails\cookbook.へ移動しよう。1分もかからない内にFigure 10のような見た目になるはずだ。

the cookbook controller directory
Figure 10. cookbookアプリケーションのcontrollerフォルダ

新しいcontrollerクラスを作るために新たなRailsの支援スクリプトを使おう。コマンドプロンプトからコマンドを実行する。

ruby script\generate controller MyTest

これでMyTestControllerクラスの骨格となる定義を持ったmy_test_controller.rbという名のファイルが出来上がる。

c:\rails\cookbook\controllersディレクトリで、ファイルを右クリックし編集(Edit)を選択する。ファイルはFigure 11のようになっているはずだ。

editing
MyTestController
Figure 11. MyTestControllerを編集する

それが存在していないことをあなたが知っているものをブラウズしてみたとしたら、何が起こるのだろう?http://127.0.0.1:3000/garbage/ を試してみよう。Figure 12がその結果だ。

Browsing to an unknown controller
Figure 12. 存在しないcontrollerをブラウズする

そんなに驚くような結果ではない。今度はhttp://127.0.0.1:3000/My_Test/ を試してみよう。Figure 13のようになる。

Browsing to the new controller
Figure 13. 新しく作ったcontrollerをブラウズする

うーん、ちょっと違った結果になった。URLのMyTestという箇所が新しく作られたcontrollerにマッピングされている。どうやら、Railsはこのcontrollerの中のindexという名前のアクションを探してみたけど見つからなかった、ということのようだ。

なんとかしてみよう。Figure 14のようにindexメソッドをcontrollerクラスへ追加する。

the index method of MyTestController
Figure 14. MyTestControllerindexメソッド

ブラウザを更新してみてほしい。今度はFigure 15のような見た目になるはずだ。

the result of the index method
Figure 15. indexメソッドの実行結果

http://127.0.0.1:3000/My_Test/index でも同様の結果になる。

もっとよくわかってもらうために、新たなアクションをcontrollerへ追加してみよう。Figure 16のdilbertメソッドだ。

the dilbert method
Figure 16. dilbertメソッド

それじゃあ、http://127.0.0.1:3000/My_Test/dilbert をブラウズして、Figure 17のようになっているのを見てみよう。

the output of the dilbert method
Figure 17. dilbertメソッドによる出力

これでだいたいわかっただろう。

ぼくらのデータベースを作って、実際のcookbookアプリケーションの中で作業をしてみよう。

Cookbookデータベースを作成する

さぁ、cookbookデータベースを作り、どこに行けばデータベースが見つけられるかをRailsに教えてやろう。(これがRailsの中で唯一、あなたが設定しなければならないものだ)

  1. MySQL-Frontを起動し、ローカルで動作するMySQLインスタンス (localhost) がルートとなっているものへログインする。パスワードは空にする。Figure 18のようになる。

    MySQL-Front
    Figure 18. MySQL-Front

  2. そこにはすでにmysqltestの二つのデータベースがある。新しくcookbookという名のデータベースを作成する。メニューからDatabase>New>Database...を実行して、データベース名のcookbookを入力する。Figure 19を参照。

    creating a new database
    Figure 19. 新規databaseを作成する

    OKボタンをクリックすればデータベースができあがる。

  3. Railsにデータベースの場所を教えてやるためにファイル c:\rails\cookbook\config\database.yml を編集し、データベース名をcookbookへと変更する。ユーザー名はroot、パスワードは空欄のままにしておく。編集が終わったら、Figure 20のようになっているはずだ。

    The database.yml configuration file
    Figure 20. 設定ファイル database.yml

Railsではdevelopment, test, productionの3モードで別々のデータベースを使うことができる。このアプリケーションではすべて同じデータベースを使う。

筆者注: この変更をするとwebサーバーを再起動する必要がある。そうしないと、Railsが新しいデータベースを参照できず以降のステップが失敗する。Ctrl-Cを押すかウィンドウを適切に閉じて、ここでwebサーバーを再起動しておこう。

Pages: 1, 2, 3, 4, 5



この記事へのトラックバック
Rolling with Ruby on Rails MySQL環境での開発サン...
Panther で Ruby on Rails (3)【花染人和クリエイション::MACなDTPと開発::トラブル記録】at October 17, 2006 23:20
Rolling with Ruby on Rails MySQL環境での開発サン...
Panther で Ruby on Rails (3)【花染人和クリエイション::MACなDTPと開発::トラブル記録】at October 17, 2006 23:22
Rolling with Ruby on Rails MySQL環境での開発サン...
Panther で Ruby on Rails (3)【花染人和クリエイション::MACなDTPと開発::トラブル記録】at October 17, 2006 23:39
この記事へのコメント
「アイデアがある」ではなく「わかった」「理解した」と訳してみてはいかがでしょうか?
ideaにはそのような意味もあるようです。
Posted by おおや at June 05, 2005 15:14
>おおやさん

なるほどー。おっしゃるとおりです。
訳していて「?」と思っていたので、非常にすっきりしました。

ご指摘どうもありがとうございました。
早速反映しておきます!
Posted by tanabe at June 06, 2005 01:22
2chのRailsスレなんですが、よければいらしてください。
http://pc8.2ch.net/test/read.cgi/php/1118663500/l50
Posted by WebProg板 at June 14, 2005 01:05