RoRで掲示板でも(2.x系) 1日目

最近まわりにRailsを勉強している人が多い。
よい本がないかと聞かれたら、今までは「RailsによるアジャイルWebアプリケーション開発」を薦めてきたのだが、あの本の問題点は情報が少し古い事だ。
調べてみると、他のチュートリアル本やウェブ上の資料もRails1.2系用に書かれているものが多く、2.x系のチュートリアルはかなり少ないことに気がついた。

というわけで、ほとんど役にはたたないかもしれないが、以前書いた「RoR掲示板でも」の記事のRails2.x対応版を書いてみようかと思う。

プロジェクトの作成

rails mybbs

まずは、railsコマンドを使ってmybbsプロジェクトを作る。
Rails2.x系ではデフォルトのデータベースはmysqlではなくsqliteが選択される。
学習用にどちらがいいか、難しい問題ではあるがひとまず今回はsqliteをそのまま使用する。
なお、mysqlを使いたい場合は -d mysql オプションを指定すれば良い。
例:rails mybbs -d mysql

データベースの準備

sqliteを使う場合はデータベースは手動で用意しなくてよい。
従って今回は特に準備なし

とりあえず一旦起動してみる

前回はscaffoldを使ってアプリケーションを作ったが、今回はscaffoldは使用しない。
そのため、前回よりも若干道のりは長い。
そこで、一旦切りが良いところでサーバーを起動してみる。

プロジェクトのディレクトリにて、

ruby script/server

を実行した状態で、ブラウザでhttp://localhost:3000/を開く。

こんな画面が表示されれば、サーバーの起動は成功

サーバを起動する場合は、ruby script/serverを実行したウィンドウでCtrl + Cを押す。

必要なページを用意する

次に掲示板として使うのに必要なページを考える。
作りたい掲示板の内容によって必要なページは変わってくるが、今回はとりあえず下記のページを作る

  1. 新しく日記を書くページ(new.html)
  2. 新着記事を一覧で表示するページ(list.html)

Ruby on Railsでは、まずコントローラというものを作り、その上で必要なページ(アクションと呼ぶ)を実装していく。
イメージとしては、下記のような形を考えるとよいかもしれない。

  • mybbsプロジェクト(サイト全体)
    • メイン掲示板(コントローラ)
      • 新しく記事を投稿するページ(アクション)
      • 新着記事を一覧で表示するページ(アクション)
    • リンク(コントローラ)
      • よくいくサイト一覧ページ(アクション)
      • お世話になっている方のサイト一覧ページ(アクション)
      • ...

今回は、掲示板用のコントローラを作る。
名前はmainbbsにしよう。
ruby script/generate controllerメソッドを作ってコントローラを作る
その際、引数で作りたいページを指定すると、あわせて自動的に必要なファイルを生成してくれる

ruby script/generate controller mainbbs new list

ではこの状態で、もう一度サーバーを起動し直して、今度は
http://localhost:3000/mainbbs/new

http://localhost:3000/mainbbs/list
を開いてみる。

すると、自動生成されたページが開かれるはずだ。
予想できたかもしれないが、RailsアプリケーションにおけるURLの生成ルールは基本的には
http://サーバーのアドレス/コントローラ名/アクション名(ページ名)
となっている。

ページの内容をいじってみる。

ここで表示されているページの内容は、
app/views/mainbbs/new.html.erb
app/views/mainbbs/list.html.erb
に書かれている。

拡張子は.htmlにさらに.erbがついた.html.erbになっているが、ここには普通のHTMLコードを書いてよい。
試しに二つのページの内容を変更してみたところで、長くなったので一日目は終了。
なお、このRails関連のファイルはUTF-8で保存しなければいけないので注意。