この記事をはてなブックマークに登録 この記事のはてなブックマーク数 この記事を livedoor クリップに登録この記事の livedoor クリップ数 この記事を Buzzurl に登録 この記事の Buzzurl ブックマーク数

[PRESS 0006] Sample Application (BLOG) の作成 [1st]

Railsの練習として、簡単なブログシステムを作ります。

Railsアプリケーションの作成

適当なディレクトリで以下のコマンドを実行してください。

CODE:
  1. rails blog_rails

blog_railsという名前のRailsアプリケーションが生成されます。

DB作成&テーブル定義

アプリケーションのフレームが出来上がったら、まずはアプリケーションで使うデータベースを生成し、テーブル定義を行います。

SQL:
  1. mysql -u root -p
  2. mysql> CREATE DATABASE blog_rails_development;
  3. mysql> CREATE DATABASE blog_rails_test;
  4. mysql> CREATE DATABASE blog_rails_production;

次に、テーブルとして

  • users
  • entries
  • comments

を作成します。それぞれの定義はSQLを実行して行っても良いのですが、できればRailsのrailに乗ってActiveRecord::Migrationを使った方が良いです。ここではMigrationを使ったテーブル定義を行います。

CODE:
  1. ./script/generate migration base
  2.       create  db/migrate
  3.       create  db/migrate/001_base.rb
  4. vi db/migrate/001_base.rb

作成したmigrationファイルの001_base.rbには、以下のようにテーブルを定義します。

RUBY:
  1. class Base <ActiveRecord::Migration
  2.   def self.up
  3.     create_table :users do |t|
  4.       t.column :login,    :string
  5.       t.column :password, :string
  6.       t.column :name,     :string
  7.       t.column :mail,     :string
  8.       t.column :profile,  :text
  9.     end
  10.    
  11.     create_table :entries do |t|
  12.       t.column :title,    :string
  13.       t.column :body,     :text
  14.       t.column :user_id,  :integer
  15.     end
  16.    
  17.     create_table :comments do |t|
  18.       t.column :body,     :text
  19.       t.column :name,     :string
  20.       t.column :mail,     :string
  21.       t.column :url,      :string
  22.     end
  23.   end
  24.  
  25.   def self.down
  26.     drop_table :users
  27.     drop_table :entries
  28.     drop_table :comments
  29.   end
  30. end

あとは実際にこのテーブルをblog_rails_developmentに作成します。

CODE:
  1. rake migrate

以下のようにテーブルが作成されると思います。(既にテーブルがあったりRAILS_ROOT/config/database.ymlにデータベースが定義されてなかったりするとエラーがでます。)

CODE:
  1. == Base: migrating ============================================================
  2. -- create_table(:users)
  3.    -> 0.1168s
  4. -- create_table(:entries)
  5.    -> 0.0043s
  6. -- create_table(:comments)
  7.    -> 0.0394s
  8. == Base: migrated (0.1610s) ===================================================

もしmigrateに失敗した時は、以下のコマンドでテーブルを削除できます。

CODE:
  1. rake migrate VERSION=0

CODE:
  1. == Base: reverting ============================================================
  2. -- drop_table(:users)
  3.    -> 0.0578s
  4. -- drop_table(:entries)
  5.    -> 0.0023s
  6. -- drop_table(:comments)
  7.    -> 0.0022s
  8. == Base: reverted (0.0629s) ===================================================

Model/Controller/Viewの作成(scaffold)

Railsでは以下のコマンドで、各テーブル(モデル)に対応するController、Viewが自動生成されます。

CODE:
  1. ./script/generate scaffold TABLE_NAME(単数形)

それでは実際に作成した各テーブルについて、上のコマンドを実行します。

CODE:
  1. ./script/generate scaffold user
  2. ./script/generate scaffold entry
  3. ./script/generate scaffold comment

実行結果はそれぞれ以下の通りになるはずです。この結果を見ると、必要なファイルやディレクトリが自動的に作られていることが分かるかと思います。

CODE:
  1. ./script/generate scaffold user
  2.       exists  app/controllers/
  3.       exists  app/helpers/
  4.       create  app/views/users
  5.       exists  test/functional/
  6.   dependency  model
  7.       exists    app/models/
  8.       exists    test/unit/
  9.       exists    test/fixtures/
  10.       create    app/models/user.rb
  11.       create    test/unit/user_test.rb
  12.       create    test/fixtures/users.yml
  13.       create  app/views/users/_form.rhtml
  14.       create  app/views/users/list.rhtml
  15.       create  app/views/users/show.rhtml
  16.       create  app/views/users/new.rhtml
  17.       create  app/views/users/edit.rhtml
  18.       create  app/controllers/users_controller.rb
  19.       create  test/functional/users_controller_test.rb
  20.       create  app/helpers/users_helper.rb
  21.       create  app/views/layouts/users.rhtml
  22.       create  public/stylesheets/scaffold.css

CODE:
  1. ./script/generate scaffold entry
  2.       exists  app/controllers/
  3.       exists  app/helpers/
  4.       exists  app/views/entries
  5.       exists  test/functional/
  6.   dependency  model
  7.       exists    app/models/
  8.       exists    test/unit/
  9.       exists    test/fixtures/
  10.       create    app/models/entry.rb
  11.       create    test/unit/entry_test.rb
  12.       create    test/fixtures/entries.yml
  13.    identical  app/views/entries/_form.rhtml
  14.       create  app/views/entries/list.rhtml
  15.       create  app/views/entries/show.rhtml
  16.       create  app/views/entries/new.rhtml
  17.       create  app/views/entries/edit.rhtml
  18.       create  app/controllers/entries_controller.rb
  19.       create  test/functional/entries_controller_test.rb
  20.       create  app/helpers/entries_helper.rb
  21.       create  app/views/layouts/entries.rhtml
  22.    identical  public/stylesheets/scaffold.css

CODE:
  1. ./script/generate scaffold comment
  2.       exists  app/controllers/
  3.       exists  app/helpers/
  4.       create  app/views/comments
  5.       exists  test/functional/
  6.   dependency  model
  7.       exists    app/models/
  8.       exists    test/unit/
  9.       exists    test/fixtures/
  10.       create    app/models/comment.rb
  11.       create    test/unit/comment_test.rb
  12.       create    test/fixtures/comments.yml
  13.       create  app/views/comments/_form.rhtml
  14.       create  app/views/comments/list.rhtml
  15.       create  app/views/comments/show.rhtml
  16.       create  app/views/comments/new.rhtml
  17.       create  app/views/comments/edit.rhtml
  18.       create  app/controllers/comments_controller.rb
  19.       create  test/functional/comments_controller_test.rb
  20.       create  app/helpers/comments_helper.rb
  21.       create  app/views/layouts/comments.rhtml
  22.    identical  public/stylesheets/scaffold.css

アプリケーションの起動

ここまでで、アプリケーションのひな形ができあがりました。ではRailsに付属の簡易サーバWEBrickを立ち上げて、アプリケーションを動作させてみましょう。

CODE:
  1. ./script/server

ここでhttp://localhost:3000/にアクセスすると、以下のような画面が表示されるはずです。

アプリケーショントップ

http://localhost:3000/entries/ではエントリーリストのページとなり、「New entry」をクリックすると以下のようなエントリー投稿画面が現れます。

sample_blog_newentry.jpeg

何かエントリーを投稿してみると、http://localhost:3000/entries/にそのエントリーが反映されていると思います。

次はこのサンプルアプリをベースにして、RailsのControllerをいじっていきたいと思います。
続きは
RAILS PRESS » [PRESS 0007] Sample Application (BLOG) の作成 [2nd]


About this entry