Rails 2.0.2でブログシステムを作ってみる(前編)

昨日無事にRails2.0.2がインストールできたので、今日はそれを使ってみる。

Railsでブログシステムを作る

簡単なブログを実装してみる。名前はブログのpipin。

プロジェクトの作成

rails --version    #=> Rails 2.0.2
rails pipin
cd pipin

メモ。

ここでデフォルトのDBがSQLite3になったというのを確認してみよう。

# config/database.yml

# SQLite version 3.x
#   gem install sqlite3-ruby (not necessary on OS X Leopard)
development:
adapter: sqlite3
database: db/development.sqlite3
timeout: 5000

(略)

確かに「adapter: sqlite3」。

DBの初期化

DBを作成してくれるコマンドが追加されたらしい。これはプロジェクトを作った後に一度だけ実行する。

rake db:create

サーバーを起動

サーバーを起動してみる。

ruby script/server

ブラウザからhttp://localhost:3000/にアクセスすると、作成したプロジェクトにアクセスできる。最初は「Welcome aboard」というデフォルトのページが表示されるはず。

Aboutというページを作る

ruby script/generate controller about

app/views/about/index.html.erbというファイルを作成して、「Hello」と書き込んでおく。

ブラウザからhttp://localhost:3000/aboutにアクセスする。「Hello」と表示される。

app/views/about/index.html.erbが上記URLでアクセスしたときにブラウザに読み込まれている。

scaffoldの実行

scaffoldを実行して記事を管理するモデルと、記事を表示するコントローラを作成する。次のコマンドを実行。

ruby script/generate scaffold Entry title:string body:text updated_at:datetime created_on:datetime

メモ。

scaffoldコマンドの後ろに、コントローラ名とモデル名の両方を書く方法はなくなったのかな。ヘルプを見る限り。

次のコマンドでヘルプを見ることができる。

ruby script/generate scaffold --help

テーブルの作成

次にエントリー(ブログの記事)を保存するテーブルを作成する。テーブルの情報は、scaffoldを実行したときのオプションをもとに、db/migrate/001_create_entries.rbに定義されている。

rake db:migrate

メモ。

rakeで実行できるタスクは「rake -T」コマンドで確認できる。

コントローラにアクセスしてみる

ブラウザからhttp://localhost:3000/entriesにアクセスする。「New entry」をクリックすると、記事を作成することができる。

レイアウトを作成

app/views/layouts/entries.html.erbを削除して、新しく以下のようなapp/views/layouts/application.html.erbを作成する。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
       "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
  <title>Pipin: <%= controller.action_name %></title>
  <%= stylesheet_link_tag 'scaffold' %>
  <%= stylesheet_link_tag 'base' %>
</head>
<body>
<div class="main">

<div class="header-menus">
  <%= link_to '日記を書く', :controller => 'entry', :action => 'new' %>
  <%= link_to '管理ページ', :controller => 'entry', :action => 'list' %>
</div>

<h1>Pipin</h1>

<div class="header-menus">
  <%= link_to 'Latest', :controller => 'entry', :action => '' %>
  <%= link_to 'Archive', :controller => 'entry', :action => 'archive' %>
  <%= link_to 'About', :controller => 'about', :action => '' %>
  <% if logged_in? %>
    <%= link_to 'Logout', :controller => 'account', :action => 'logout' %>
  <% else %>
    <%= link_to 'Loign', :controller => 'account', :action => 'login' %>
  <% end %>
  <%#= link_to 'RSS', :controller => 'entry', :action => 'rss' %>
</div>

<p style="color: green"><%= flash[:notice] %></p>

<%= yield  %>

</div>
</body>
</html>

今日はここまで。