既存のDBを用いてRailsアプリケーションを立ち上げる


Railsでは、ヘルプや本の手順どおり構築しようとすると、DBは新たに新規作成するパターンで教わる。
でも実際の仕事ではDB設計が先→Railsアプリケーションが後、も当たり前のように必要となるため、その手順について調べてみた。

ちなみにテスト環境は、AptanaStudio + InstantRails1.7 、よってDBはMySQLです。

大まかな手順


既存のDBからスキーマ情報を取り込む


Railsの rake コマンドには、構築済みDBのスキーマ情報をRails表現で吸い出してくれるコマンドがある。


手順


※データベース名を db1 とする

  1. Rails Project を作成 (プロジェクト名:sample とする)
  2. database.yml の内容を編集し、sample_test で良いので一時 database: db1 に変更する
  3. rake environment RAILS_ENV=test db:schema:dump を実行 →これで、db以下にschema.rbができ、中身に指定databeseの全テーブルのスキーマ情報がcreate table の形式で書き出される、しかも force => true
  4. (既存DBと別に同じテーブルを新設して利用する場合)database.yml の内容を元に戻して、rails script/generate model sample を実行 →モデルに必要なファイルが作成される
  5. db/migrate/001_create_tr3s.rb が作成されるので、その中に先ほど吸いだした schema.rbの該当箇所をコピペする
  6. rake db:migrate を実行 → DBが新設されて以降は通常のRailsの作業になる

注意点


既存のDBは、Railsのルールに沿ったスキーマ定義にしておく必要があります。(:idがプライマリキーのフィールドとしてあること、など)なっていない場合も、schema.rbに取り出した後で手修正を加えて流用する事は可能です。

既存のDBの取り込みが完了した後


scaffold で閲覧ページを作るなど、Railsお得意の展開に持ち込めばよい。
#railsのソース、Rubyのソースをかき集めよう、

タグ:

Rails Ruby 作業メモ
+ タグ編集
  • タグ:
  • Rails
  • Ruby
  • 作業メモ

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年10月09日 01:13