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>
今日はここまで。