俺様用 Rails の使い方のまとめ

プロジェクト名を hoge と仮定し,DBMSpostgresql を使った場合について,自分用にまとめておきます.

データベースを作成

$ sudo su postgres createuser -S -d -R hoge
$ createdb -U hoge -E utf8 hoge_development
$ createdb -U hoge -E utf8 hoge_test
$ createdb -U hoge -E utf8 hoge_production

プロジェクトの新規作成と初期設定

まずは新規作成から.

$ rails hoge --database=postgresql

続いて,データベース設定.hoge/config/database.yml を開いて,次のように修正します.

# PostgreSQL versions 7.4 - 8.1
#
# Get the C bindings:
#   gem install postgres
# or use the pure-Ruby bindings on Windows:
#   gem install postgres-pr
development:
  adapter: postgresql
  database: hoge_development
  username: hoge
  password:

  # Connect on a TCP socket.  Omitted by default since the client uses a
  # domain socket that doesn't need configuration.  Windows does not have
  # domain sockets, so uncomment these lines.
  #host: localhost
  #port: 5432

  # Schema search path.  The server defaults to $user,public
  #schema_search_path: myapp,sharedapp,public

  # Character set encoding.  The server defaults to sql_ascii.
  encoding: UTF8

  # Minimum log levels, in increasing order:
  #   debug5, debug4, debug3, debug2, debug1,
  #   info, notice, warning, error, log, fatal, or panic
  # The server defaults to notice.
  #min_messages: warning

# Warning: The database defined as 'test' will be erased and
# re-generated from your development database when you run 'rake'.
# Do not set this db to the same as development or production.
test:
  adapter: postgresql
  database: hoge_test
  username: hoge
  password:
  encoding: UTF8

production:
  adapter: postgresql
  database: hoge_production
  username: hoge
  password:
  encoding: UTF8

それから,実行環境の設定.config/environment.rb を開いて,先頭に次を追加します.これは,エンコードUTF-8 にするためです.

$KCODE = 'u'

最初のテーブルを作成

Rails では,テーブルの作成・変更を rake db:migrate で統一して扱います.そのため,テーブルを新たに作成したり,既存のテーブルを変更する場合は migration 用のコードを作らなければなりません.

ここでは,次のテーブルを foods という名前で作成するための migration コードを作ります.

カラム名 オプション
id integer primary key
name string not null,80バイト長
price integer not null
expire timestamp

migration 用のコードは script/generate を使って次のように生成します.

$ ruby script/generate migration create_foods

これで,db/migrate/001_create_foods.rb というファイルが作られている.ファイル名の先頭にある 001 はバージョン番号です.これを開いて,次のようにコードを修正します.

class CreateFoods < ActionRecord::Migration
  def self.up
    create_table(:foods) do |table|
      table.column(:name, :string, { :null => false, :limit => 80})
      table.column(:price, :integer, { :null => false })
      table.column(:expire, :timestamp)
    end
  end

  def self.down
    drop_table(:foods)
  end
end

プライマリキーである id カラムは自動生成される仕様になっています.

migration 用のスクリプトが完成したら,次のようにしてテーブルを作成します.

$ rake db:migrate

ビューとコントローラのテンプレートを生成

上で作成したテーブルのビューとコントローラのテンプレートを scaffold で作成します.

$ ruby script/generate scaffold Food

scaffold はモデルとなるクラスに対して作成されます.今対象としている foods テーブルは,Ruby では Food クラスにバインドされますから,scaffold の対象は Food クラスになります.これで,foods テーブルに対して,デフォルトの操作である list, show, new, そして edit の4つのコントローラと,それらに付随するビューが作成されます.また,ユニットテストで仕様する fixture 等も作成されます.

おわりに

とりあえず,ここまででプロジェクトの雛形的なものは完成します.これ以上詳しい事は,『はじめよう Ruby on Rails』とかを読むと分かりやすく説明されています.