いよいよ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/ なんだ??