既存のDBを用いてRailsアプリケーションを立ち上げる
Railsでは、ヘルプや本の手順どおり構築しようとすると、DBは新たに新規作成するパターンで教わる。
でも実際の仕事ではDB設計が先→Railsアプリケーションが後、も当たり前のように必要となるため、その手順について調べてみた。
ちなみにテスト環境は、AptanaStudio + InstantRails1.7 、よってDBはMySQLです。
大まかな手順
既存のDBからスキーマ情報を取り込む
Railsの rake コマンドには、構築済みDBのスキーマ情報をRails表現で吸い出してくれるコマンドがある。
手順
※データベース名を db1 とする
- Rails Project を作成 (プロジェクト名:sample とする)
- database.yml の内容を編集し、sample_test で良いので一時 database: db1 に変更する
- rake environment RAILS_ENV=test db:schema:dump を実行 →これで、db以下にschema.rbができ、中身に指定databeseの全テーブルのスキーマ情報がcreate table の形式で書き出される、しかも force => true
- (既存DBと別に同じテーブルを新設して利用する場合)database.yml の内容を元に戻して、rails script/generate model sample を実行 →モデルに必要なファイルが作成される
- db/migrate/001_create_tr3s.rb が作成されるので、その中に先ほど吸いだした schema.rbの該当箇所をコピペする
- rake db:migrate を実行 → DBが新設されて以降は通常のRailsの作業になる
注意点
既存のDBは、Railsのルールに沿ったスキーマ定義にしておく必要があります。(:idがプライマリキーのフィールドとしてあること、など)なっていない場合も、schema.rbに取り出した後で手修正を加えて流用する事は可能です。
既存のDBの取り込みが完了した後
scaffold で閲覧ページを作るなど、Railsお得意の展開に持ち込めばよい。
#railsのソース、Rubyのソースをかき集めよう、
最終更新:2008年10月09日 01:13