人気ブログランキング | 話題のタグを見る

RoR 2.x の scaffold を使ったウェブアプリケーションの作り方

script/console でデータベースを操作するために、もう一度 scaffold を使ったウェブアプリケーションの作り方をおさらいする。scaffold は RoR 2.x のものを使うので、標準のデータベースは sqlite3 を使うので、sudo gem install sqlite3-ruby で sqlite-3 をインストールしておく必要がある。

まず、Rails のプロジェクトを作る。
~/console/rails$ rails demo

demo ディレクトリに移動して、scaffold で hero というモデルを作る。
~/console/rails$ cd demo
~/console/rails/demo$ script/scaffold hero name:string sex:string age:integer

データベースに Sqlite3 を使う場合はフィールドの定義も一度にできてしまうが、rake db:migrate は必要だ。
~/console/rails/demo$ rake db:migrate

後は、いつもの手順で script/server を起動すれば良い。
~/console/rails/demo$ script/server

最後はブラウザで、http://localhost:3000/heros にアクセスすると、ウェブアプリを使用できてしまう。script ディレクトリの中のコマンドの中身を見たりしているので、自分が何をやっているのかというイメージが湧くようになってきたので少し気が楽だ。

ついでにブラウザで次のようなデータを入れておく。

Listing heros
Name Sex Age
Spiderman male 18 Show Edit Destroy
Wonderwoman female 31 Show Edit Destroy
Superman male 25 Show Edit Destroy

これだけの準備が済んだら、一旦サーバーを Ctrl + C で止める。

ここからが本題だが、再度 script/console を起動する。
~/console/rails/demo$ script/console
Loading development environment (Rails 2.1.1)
>>

RoR の CoC(convention over configuration) や MVC(model view controller) の解説は参考書にまかせることにして、heros テーブルのデータは Hero クラスのメソッドで操作できる。そこで、Hero.find(id) メソッドを scirpt/console 上で使ってみることにする。

>> Hero.find(1)
=> #<Hero id: 1, name: "Spiderman", sex: "male", age: 18, created_at: "2008-11-03 00:16:34", updated_at: "2008-11-03 00:16:59">

すると、テーブル heros の id=1 の行のデータをオブジェクトとして取り出すことができた。つまり、ActiveRecord や ActiveHelper などを利用して様々な処理が script/console 上で出きることがわかる。これらの解説を読んで実際にコンソール上で試してみることができるようだ。

Ruby on Rails を Ruby で書かれているが全く別のフレームワークだと考えるのと、RoR といえどもやはり Ruby のプログラムで、他のRubyのプログラムを扱うのと同じ発想で考えることができるのだと考えるのでは、垣根の高さがずいぶん違うような気がする。

RoR に関して長々とプログラムネタを扱ってきたが、つかみ所のなかった RoR の姿が何となく分かって来たような気がしてきたので一連の記事の終了としたい。
by tnomura9 | 2008-11-03 10:40 | Ruby | Comments(0)
<< 略語 RoR 特定のクラス固有のメソッド >>