[PRESS 0006] Sample Application (BLOG) の作成 [1st]
Railsの練習として、簡単なブログシステムを作ります。
Railsアプリケーションの作成
適当なディレクトリで以下のコマンドを実行してください。
-
rails blog_rails
blog_railsという名前のRailsアプリケーションが生成されます。
DB作成&テーブル定義
アプリケーションのフレームが出来上がったら、まずはアプリケーションで使うデータベースを生成し、テーブル定義を行います。
-
mysql -u root -p
-
mysql> CREATE DATABASE blog_rails_development;
-
mysql> CREATE DATABASE blog_rails_test;
-
mysql> CREATE DATABASE blog_rails_production;
次に、テーブルとして
- users
- entries
- comments
を作成します。それぞれの定義はSQLを実行して行っても良いのですが、できればRailsのrailに乗ってActiveRecord::Migrationを使った方が良いです。ここではMigrationを使ったテーブル定義を行います。
-
./script/generate migration base
-
create db/migrate
-
create db/migrate/001_base.rb
-
vi db/migrate/001_base.rb
作成したmigrationファイルの001_base.rbには、以下のようにテーブルを定義します。
-
class Base <ActiveRecord::Migration
-
def self.up
-
create_table :users do |t|
-
t.column :login, :string
-
t.column :password, :string
-
t.column :name, :string
-
t.column :mail, :string
-
t.column :profile, :text
-
end
-
-
create_table :entries do |t|
-
t.column :title, :string
-
t.column :body, :text
-
t.column :user_id, :integer
-
end
-
-
create_table :comments do |t|
-
t.column :body, :text
-
t.column :name, :string
-
t.column :mail, :string
-
t.column :url, :string
-
end
-
end
-
-
def self.down
-
drop_table :users
-
drop_table :entries
-
drop_table :comments
-
end
-
end
あとは実際にこのテーブルをblog_rails_developmentに作成します。
-
rake migrate
以下のようにテーブルが作成されると思います。(既にテーブルがあったりRAILS_ROOT/config/database.ymlにデータベースが定義されてなかったりするとエラーがでます。)
-
== Base: migrating ============================================================
-
-- create_table(:users)
-
-> 0.1168s
-
-- create_table(:entries)
-
-> 0.0043s
-
-- create_table(:comments)
-
-> 0.0394s
-
== Base: migrated (0.1610s) ===================================================
もしmigrateに失敗した時は、以下のコマンドでテーブルを削除できます。
-
rake migrate VERSION=0
-
== Base: reverting ============================================================
-
-- drop_table(:users)
-
-> 0.0578s
-
-- drop_table(:entries)
-
-> 0.0023s
-
-- drop_table(:comments)
-
-> 0.0022s
-
== Base: reverted (0.0629s) ===================================================
Model/Controller/Viewの作成(scaffold)
Railsでは以下のコマンドで、各テーブル(モデル)に対応するController、Viewが自動生成されます。
-
./script/generate scaffold TABLE_NAME(単数形)
それでは実際に作成した各テーブルについて、上のコマンドを実行します。
-
./script/generate scaffold user
-
./script/generate scaffold entry
-
./script/generate scaffold comment
実行結果はそれぞれ以下の通りになるはずです。この結果を見ると、必要なファイルやディレクトリが自動的に作られていることが分かるかと思います。
-
./script/generate scaffold user
-
exists app/controllers/
-
exists app/helpers/
-
create app/views/users
-
exists test/functional/
-
dependency model
-
exists app/models/
-
exists test/unit/
-
exists test/fixtures/
-
create app/models/user.rb
-
create test/unit/user_test.rb
-
create test/fixtures/users.yml
-
create app/views/users/_form.rhtml
-
create app/views/users/list.rhtml
-
create app/views/users/show.rhtml
-
create app/views/users/new.rhtml
-
create app/views/users/edit.rhtml
-
create app/controllers/users_controller.rb
-
create test/functional/users_controller_test.rb
-
create app/helpers/users_helper.rb
-
create app/views/layouts/users.rhtml
-
create public/stylesheets/scaffold.css
-
./script/generate scaffold entry
-
exists app/controllers/
-
exists app/helpers/
-
exists app/views/entries
-
exists test/functional/
-
dependency model
-
exists app/models/
-
exists test/unit/
-
exists test/fixtures/
-
create app/models/entry.rb
-
create test/unit/entry_test.rb
-
create test/fixtures/entries.yml
-
identical app/views/entries/_form.rhtml
-
create app/views/entries/list.rhtml
-
create app/views/entries/show.rhtml
-
create app/views/entries/new.rhtml
-
create app/views/entries/edit.rhtml
-
create app/controllers/entries_controller.rb
-
create test/functional/entries_controller_test.rb
-
create app/helpers/entries_helper.rb
-
create app/views/layouts/entries.rhtml
-
identical public/stylesheets/scaffold.css
-
./script/generate scaffold comment
-
exists app/controllers/
-
exists app/helpers/
-
create app/views/comments
-
exists test/functional/
-
dependency model
-
exists app/models/
-
exists test/unit/
-
exists test/fixtures/
-
create app/models/comment.rb
-
create test/unit/comment_test.rb
-
create test/fixtures/comments.yml
-
create app/views/comments/_form.rhtml
-
create app/views/comments/list.rhtml
-
create app/views/comments/show.rhtml
-
create app/views/comments/new.rhtml
-
create app/views/comments/edit.rhtml
-
create app/controllers/comments_controller.rb
-
create test/functional/comments_controller_test.rb
-
create app/helpers/comments_helper.rb
-
create app/views/layouts/comments.rhtml
-
identical public/stylesheets/scaffold.css
アプリケーションの起動
ここまでで、アプリケーションのひな形ができあがりました。ではRailsに付属の簡易サーバWEBrickを立ち上げて、アプリケーションを動作させてみましょう。
-
./script/server
ここでhttp://localhost:3000/にアクセスすると、以下のような画面が表示されるはずです。
http://localhost:3000/entries/ではエントリーリストのページとなり、「New entry」をクリックすると以下のようなエントリー投稿画面が現れます。
何かエントリーを投稿してみると、http://localhost:3000/entries/にそのエントリーが反映されていると思います。
次はこのサンプルアプリをベースにして、RailsのControllerをいじっていきたいと思います。
続きは
RAILS PRESS » [PRESS 0007] Sample Application (BLOG) の作成 [2nd]へ
About this entry
You’re currently reading “ [PRESS 0006] Sample Application (BLOG) の作成 [1st] ,” an entry on RAILS PRESS
- Published:
- 12.20.06 / 6pm
- Category:
- practice
No comments
Jump to comment form | comments rss [?] | trackback uri [?]