2006.11.10

Ruby Rails

Ruby on RailsによるWebアプリケーションの作り方(入門編)

研究室のRails勉強会の為に、Railsアプリケーションを作るときの最初のフロー(scaffoldまで)をまとめてみます。なお、ここではRails環境はすでに構築済みのものとします。(環境構築についてはこちらを参照

目次は以下の通り。

  1. railsアプリ作成
  2. データベース設定(database.yml)
  3. データベース定義(ActiveRecord::Migration)
  4. 動くアプリケーション(ひな型)作成

1. railsアプリ作成

ここではbookmarkという名前の簡単なブックマークサービスを作成します。まずは以下のコマンドを実行します。

mac:~$ rails bookmark

すると以下のような出力が得られ、bookmarkアプリのディレクトリが生成されます。

mac:~$ rails bookmark
      create  
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  components
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  script/process
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/mocks/development
      create  test/mocks/test
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  Rakefile
      create  README
      create  app/controllers/application.rb
      create  app/helpers/application_helper.rb
      create  test/test_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  public/.htaccess
      create  config/boot.rb
      create  config/environment.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/breakpointer
      create  script/console
      create  script/destroy
      create  script/generate
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  script/process/reaper
      create  script/process/spawner
      create  script/runner
      create  script/server
      create  script/plugin
      create  public/dispatch.rb
      create  public/dispatch.cgi
      create  public/dispatch.fcgi
      create  public/404.html
      create  public/500.html
      create  public/index.html
      create  public/favicon.ico
      create  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log

はい、railsアプリ作成はここまで。簡単でしょ?

2. データベース設定(database.yml)

次に、アプリケーションで使用するデータベースを指定します。まずはアプリケーションディレクトに移動。

mac:~$ cd bookmark

次に使用するデータベースの設定ファイルを編集します。

mac:~$ vi config/database.yml

編集するのはこの部分。

database: bookmark_development
username: root
password:
host: localhost

今回はデータベース名はデフォルトのbookmark_developmentというのを利用します。ユーザ名とパスワードだけはあなたの環境に合わせて編集してください。

これでデータベース設定は終了です。

3. データベース定義(ActiveRecord::Migration)

次にデータベース構造を定義します。まずはデータベース定義ファイルを作成しましょう。

mac:~/bookmark$ ./script/generate migration bookmark_base
      create  db/migrate
      create  db/migrate/001_bookmark_base.rb

では、実際にこのファイルを編集します。

mac:~/bookmark$ vi db/migrate/001_bookmark_base.rb

最初は以下のようになっています。

class BookmarkBase < ActiveRecord::Migration
  def self.up
  end
 
  def self.down
  end
end

ここではitemというテーブルにtitle, url, user_id, description, created_atというカラムを用意します。この定義は次のようになります。

class BookmarkBase < ActiveRecord::Migration
  def self.up
    create_table :items do |t|
      t.column :title, :string
      t.column :url, :string
      t.column :user_id, :integer
      t.column :description, :text
      t.column :created_at, :datetime
    end
  end
 
  def self.down
    drop_table :items
  end
end

これでテーブル定義も終了です。

4. 動くアプリケーション(ひな型)作成

もうあとすこしで(とりあえず)動くプログラムが出来上がります。

まず、MySQLのデータベースを作成します。

mac:~/bookmark$ mysql -u root -p
mysql> create database bookmark_development;
mysql> exit

次に、以下のコマンドで実際にテーブルを作成しましょう。

mac:~/bookmark$ rake migrate

以下のような結果が得られて、テーブルが作成されます。

mac:~/bookmark$ rake migrate
(in /Users/nov/Desktop/bookmark)
== BookmarkBase: migrating =========================
-- create_table(:items)
   -> 0.0043s
== BookmarkBase: migrated (0.0044s) ==================

では、ひな型作成のおまじないを。

mac:~/bookmark$ ./script/generate scaffold item

実行結果はこんな感じ。アプリケーションのひな型になるファイルが複数自動生成されます。

mac:~/bookmark$ ./script/generate scaffold item
      exists  app/controllers/
      exists  app/helpers/
      create  app/views/items
      exists  test/functional/
  dependency  model
      exists    app/models/
      exists    test/unit/
      exists    test/fixtures/
      create    app/models/item.rb
      create    test/unit/item_test.rb
      create    test/fixtures/items.yml
      create  app/views/items/_form.rhtml
      create  app/views/items/list.rhtml
      create  app/views/items/show.rhtml
      create  app/views/items/new.rhtml
      create  app/views/items/edit.rhtml
      create  app/controllers/items_controller.rb
      create  test/functional/items_controller_test.rb
      create  app/helpers/items_helper.rb
      create  app/views/layouts/items.rhtml
      create  public/stylesheets/scaffold.css

はい、できあがりです。じゃあ実際に動かしてみましょうか。Railsアプリには簡易サーバーが用意されているので、以下のコマンドでそのサーバを起動します。

mac:~/bookmark$ ./script/server

それでは動作確認です。ブラウザを開いて、http://localhost:3000/itemsにアクセスしてみてください。こんな画面が現れたら、ひな型完成です。

bookmark_rails.jpg


これでRailsアプリのひな形は完成です。どうです?簡単だと感じていただけたでしょうか??

あとはこのひな型をちょこちょこ編集して、実際のアプリケーションを作成して行くのですが、今回の内容はここまでで。続きをご希望の方は、コメントいただければ検討いたしますm_ _m

独学でRailsの勉強を続けたい方には、こちらの書籍(Rails開発者執筆のRails入門書)をおすすめします。

Agile Web Development With Rails: A Pragmatic Guide (The Facets of Ruby Series)


日本語がいいよ!!って方は翻訳版を。僕も翻訳版派です(w

RailsによるアジャイルWebアプリケーション開発

おわりに

と、ここまでを、明日Webアプリケーションを作ったことの無い学部生達に、20分くらいで教えたいのです。が、WindowsでのRails環境構築が鬼門です。僕はやったことない。。