いよいよRoRでデモの作成
ベースプラットフォームの作成
適当なディレクトリへ移動(なにか作る)して、ベースプラットフォームとやらを作る。
>rails demo create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create components ・・・
demoというディレクトリが作られ、その下にいろいろファイルが作られた。テンプレートみたいなものか。ディレクトリ構成が、それぞれどういう意味があるのかとっても気になったのだが、詳しい説明がパッと見つからない*1 *2。 まあ、そのうち調べよう。とりあえず先へ進む。
データベース設定
demo/config/database.yml を環境に合わせて編集。
development: adapter: mysql database: demo_development username: testuser password: testpasswd host: localhost
データベースの設定を指定どおりにしてあれば、ここではユーザ名とパスワードを変更するだけ。しかし、development: だけでいいのかな? コメントによると、test: は自動で作られるからセットすんな、と書いてあるんだけど、production: はどうなんだろう。ここもあとで確認。
モデルの作成
つづいて、モデルの作成。テーブル名がdiariesという複数形であることに対して、指定しているモデル名は単数形というのが慣例だそうだ。script/generate と呼び出しているが、これはどこから指定しても(たとえばscriptディレクトリへ移動して generate と指定しても)うまく解決してくれるようだ。
demo>ruby script/generate model Diary exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/diary.rb create test/unit/diary_test.rb create test/fixtures/diaries.yml create db/migrate create db/migrate/001_create_diaries.rb
ところで、「モデル」というのがどういったものなのかよくわかりませんが、なにか生成されたようだ。名前からすると、アプリケーションモデルとテストコード、DBのマッピングファイル?のようなものが生成された模様。ちなみに、モデル名は「Diary」と大文字で指定したのに、ファイルは小文字になっている。app/models/diary.rb の中を見てみると以下の2行のみ。クラス名は大文字なのね。ファイル名は小文字にするっていうのは ruby の文化? Java文化に馴染んでいる私にとってちょっと気持ち悪い(^^;
class Diary < ActiveRecord::Base end
コントローラの作成
モデルと同様にコントローラも作れるけど、RoR では Scaffold というものを使うと便利らしい。
demo>ruby script/generate scaffold Diary exists app/controllers/ exists app/helpers/ create app/views/diaries exists app/views/layouts/ exists test/functional/ dependency model exists app/models/ exists test/unit/ exists test/fixtures/ identical app/models/diary.rb identical test/unit/diary_test.rb identical test/fixtures/diaries.yml create app/views/diaries/_form.rhtml create app/views/diaries/list.rhtml create app/views/diaries/show.rhtml create app/views/diaries/new.rhtml create app/views/diaries/edit.rhtml create app/controllers/diaries_controller.rb create test/functional/diaries_controller_test.rb create app/helpers/diaries_helper.rb create app/views/layouts/diaries.rhtml create public/stylesheets/scaffold.css
Scaffold を使うと、自動で一覧表示、追加、編集などの制御を追加してくれるらしい。それっぽいのがviewsにできている。
起動
RoRにはお手軽Webサーバもあるんだね。ちょっとした実行には便利。以下で起動
D:\workspace2\rails\demo>ruby script\server => Booting WEBrick...
起動すると Windows セキュリティセンターから警告。許可を与えてアクセス可能にする。
ブラウザから「http://localhost:3000/」*3でアクセスすると、WEBrickのトップページが表示される。続いて「http://localhost:3000/diaries」にアクセスすると、先ほど作ったアプリが・・・ あれ? Routing Error って出てるよ(^^;(コントローラの作成を飛ばしてました。。追加するとOK) うまく表示されました。
日記の新規投稿や編集、削除なんかができますね。
次回以降はもうちょいカスタマイズしていってみよう。
*1:http://www.rubylife.jp/rails/ini/index2.html 一応あったがざっくりすぎ。
*2:http://www.thinkit.co.jp/free/article/0605/2/3/ これも割りとざっくり。
*3:なんでマイコミでは「http://0.0.0.0:3000/ なんだ??