2008年1月4日金曜日

デフォルトDBを SQLite3 から MySQL に

使ったことない SQLite3 よりは、まだ使ったことがある MySQL を使いたいので、どうにかしてデフォルトのDBを MySQL に切り替えようと、ここから苦戦。

2.0.2 になる前はデフォルトが MySQL だったのでそれを SQLite3 にしようとした先人達の情報によると、方法としては幾つかあるようだ。
  1. skelton の使用を諦めて、手動で rails -d mysql する
  2. config/database.yml を手動で MySQL 用に書き換える
  3. RadRails の設定でどうにかする
  4. RoR の設定でどうにかする
1. のやり方は、RadRails(Eclipse)の使い方に慣れてないのでパス

2. のやり方は、一番原始的だけどスマートじゃないのでパス

3. のやり方は、RadRails に指定している rails の path のところをうまく細工すればいくかな? と思ってやってみた。InstantRails の ruby\bin\rails は Ruby スクリプトなので、うまく細工すれば -d mysql のオプションをつけるなどしていけると思ったが、やり方がわからず断念。同じディレクトリに rails.bat や rails.cmd といった MSDOS スクリプトもあるが、これらをいじってもダメだったので、結局諦めた

で、最後は 4. のやり方だ。
InstantRails 以下の ruby/lib/ruby/gems/1.8/gems/rails-2.0.2 を sqlite3 でサーチしたところ、lib/rails_generator/generators/applications/app/app_generator.rb 内にそれらしい記述があった。見ると、default_options :db => (ENV["RAILS_DEFAULT_DATABASE"] || "sqlite3"), という
記述になっていた。
ということは、RAILS_DEFAULT_DATABASE を mysql にしてあげればうまくいきそうだ。しかし、結局これはうまくいかなかった。うまく環境変数が渡せなかったようだ。

で、結局どうしたかというと、上記の app_generator.rb をいじって、最後の "sqlite3" の部分を "mysql" に書き換えた。とても最善の方法とは言えないが、とりあえずこれでどうにかなったので、もっといい方法が見つかるまでこれでいくことにした。

0 件のコメント: