俺様用 Rails の使い方のまとめ
プロジェクト名を hoge と仮定し,DBMS に postgresql を使った場合について,自分用にまとめておきます.
データベースを作成
$ 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』とかを読むと分かりやすく説明されています.