railsコマンドのデータベース指定
(/3/17追記。「Rails勉強会@東京第28回ライトニングトーク」にてここの内容発表しました。当日の様子と発表の準備については「Rails勉強会 出席」にて)
railsコマンドで最初に Railsアプリケーションを作る際、デフォルトじゃないDBシステムを指定するにはコマンドラインオプションに「--database=postgresql」(または -d postgresql)と書く訳だ。しかし、毎回書いてるのはなんか面倒臭い、というか忘れる、DRYじゃない。
環境変数なんかで指定しておけないかとさがすけど出てこない。AWDwR見てもさっきのオプションのことしか出てないみたい。いろいろ検索しても探せない。
Windowsでの railsコマンドの起動
というわけで railsコマンドの起動を追いかけてみる。
Windowsです、XP。
- C:\Program Files\ruby-1.8\bin\rails.bat
- C:\Program Files\ruby-1.8\bin\rails
- C:\Program Files\ruby-1.8\lib\ruby\gems\1.8\gems\rails-2.0.2\bin\rails
- バージョンチェックとかちょっと
- 第一引数が versionぽかったらヴァージョン表示して終了
- freeze かどうかのチェックをして、第一引数を app_path にセット、別に引数を shift したりはしない
- generator系を requireしたりちょっと準備
- Rails::Generator::Scripts::Generate.new.run(ARGV, :generator => 'app')
- freeze系の処理ちょっと
データベースオプションを書いておく
というわけで、上記起動機序のどこかにデータベースオプションを紛れ込ませよう。
注意するのは、第一引数が上で見てきたように特別扱いになっているということ、所要のデータベースオプションが第一引数の邪魔をしないようにする。
まあ、rails.bat だよね。上でも引用してる 6行目を次のように書き換える。一応95系のところも同様に。
"%~dp0ruby.exe" "%~dpn0" %* --database=postgresql
なってる。