読者です 読者をやめる 読者になる 読者になる

本当は怖い情報科学

情報系大学院生の趣味&実益ブログ。

自分だけ好きなRDBMSの設定を使う方法、またはenvironmentの追加の仕方

Rails

知ってる人には当たり前、Rails本にもちゃんと書いてある、だけど意外と知られていない。
そんなtipsの1つとして、「周りに迷惑をかけずに自分だけ違うRDBMSや環境設定を使う = 自分だけのRAILS_ENVを定義する」方法があるね。

ここでは、周りはみんなSQLiteだけど自分だけMySQLを使いたい場合を考えてみる。

RAILS_ENVというのは、

$ ruby script/server --help
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
Usage: server [options]
    -p, --port=port                  Runs Rails on the specified port.
                                     Default: 3000
    -b, --binding=ip                 Binds Rails to the specified ip.
                                     Default: 0.0.0.0
    -d, --daemon                     Make server run as a Daemon.
    -u, --debugger                   Enable ruby-debugging for the server.
    -e, --environment=name           Specifies the environment to run this server under (test/development/production).
                                     Default: development

    -h, --help                       Show this help message.

の赤字のオプションのことだ。Railsのコードの中では、常にRAILS_ENVという定数で参照できるようになってる。スクリプトのヘルプでは、test/development/productionのいずれかを選べ、って書いてあるけど、これは自分で定義して追加することができる。ここではfukudaというRAILS_ENVを定義してみよう。

まず、config/environments/にある、development.rbというファイルをfukuda.rbという名前でコピーする。次に、config/database.ymlに、下の内容を追加しよう:

fukuda:
   adapter: mysql
   database: db_name
   username: db_username
   password: db_password
   host: localhost

そして、最後に

$ ruby script/server -e fukuda

としてサーバーを起動すればいい。これらの変更は、SCMにコミットしてしまっても問題ない。他の人にはまったく迷惑がかからないので便利。

【広告】