2006-11-16
既存のDBとRailsを組み合わせて使う(1)〜開発用 データベースを作る
すでにDBがあって,データもそこそこ入っている状況で,そのDBを使うRailsアプリを作りたい。テーブル構成はシンプルで,メインのテーブルが数個のテーブルを(1:1で)外部参照しているだけ。ただ,このメインテーブルにはRails必須のidカラムが無い。idとして使っているカラムはあるが整数でもない。うーん。とりあえず稼働中といってもまだ公開しているわけじゃないので,一度ダンプして,カラムにシリアル型のidを追加してリストアした。
せっかく既にDBがあるんだから,development用に同じストラクチャのテーブルを手作業で作るのは面倒くさい。
- とりあえずDBだけは作った(artonさん本の db_setup.rake が便利)
- database.yml を編集して,production は稼働中DBに合わせた。
rake environment RAILS_ENV=production db:schema_dump
これでスキーマがダンプされる。これを migrate のスクリプトにそのまま使おう。
ruby script/generale model Member
とモデルを作ると(ただし罠あり。次項を参照),db/migrate の下に 001_create_members.rb というファイルができるので,その中にさっき作ったスキーマのファイルからコピペ。各モデルごとにこれを繰り返す。マイグレーションする前にもう1つ問題が。
メインのデータベースには id カラムを追加したけど,他のテーブルには無い。でも「id」って名前じゃないけど整数のプライマリーキーは付いているので,それをそのまま使いたい。こんな感じでマイグレーションファイルに追加。
options = {
:primary_key => "job_id"
}
create_table :job_master, options do |t|
t.column "name", :string, :null => false
end
最後に
rake migrate
すれば同じテーブル構成ができる。もっと簡単な方法があったら教えてほしい。なにか便利な rake タスクがあるのだろうか(rake -T でタスク一覧がでます)。
ここまでくると,production(つまり稼働中の)データベースからdevelopmentにデータを持ってくるのも自動化したい。けどこれも簡単な方法が分からなかったので,DB固有のダンプ&リストアを使った。lib/tasks配下にrakeのタスクを書けば何かいいことがあるだろうか。これも便利なタスクが既にあるのかな。
カラム名なんか Rails 流に直したくなるけど,面倒になりそうのでぐっと我慢。
- 31 http://wikipedia.simpleapi.net/
- 15 http://reader.livedoor.com/reader/
- 15 http://www.google.com.tr/search?hl=tr&q=secondilife&meta=
- 10 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLD,GGLD:2005-22,GGLD:ja&q=javascript+"function()"
- 8 http://www.google.co.jp/search?sourceid=navclient-ff&ie=UTF-8&rls=GGGL,GGGL:2006-21,GGGL:ja&q=switchtower
- 6 http://d.hatena.ne.jp/keyworddiary/Ruby
- 5 http://d.hatena.ne.jp/keyword/はてなグラフ数値登録API
- 5 http://eto.com/d/Capistrano.html
- 5 http://wiki.fdiary.net/tmpruby/?(Rails)capistrano(SwitchTower)
- 5 http://www.google.com.tr/search?hl=tr&q=secondilife&btnG=Google'da+Ara&meta=


