ランプの中身(Ruby on Railsのシステム開発)
ランプの中身(Ruby on Railsのシステム開発)では、株式会社ケイビーエムジェイのRuby on Railsエンジニアが蓄積したノウハウを公開しています。Ruby on Railに関する技術解説や実践的なノウハウなど、開発現場の技術に則したコンテンツを随時追加していきます。 初心者の方でもわかりやすい技術解説を心がけています。リクエスト、ご質問も受け付けいますので、お気軽にコメントを記述して下さい。

< TABLEに直接データを入れる便利な方法... | メイン | PostgreSQL8.3でウォームスタ... >

Fujishiro
2008.06.30

同じappでDBを使い分ける

どうもメガネです。4回目です。 

今回は、railsで同じappの中で、違うDBを使う方法を説明します。

 

例えば、アドレスをhttp://192.168.0.2/test1と打った時とhttp://192.168.0.2/test2と打った時にデータの内容が違うということです。

 


 

どうやってやるかというとmongrelのポート番号で分けます。

 

まず、database.ymlの設定を行います。

test1:

adapter: postgresql

database: test1

username: postgres

password: PostgreSQLのパスワードを入力する。

encoding: utf-8       

 

test2:

adapter: postgresql

database: test2

username: postgres

password: PostgreSQLのパスワードを入力する。

encoding: utf-8

 

 

次にMigrateします。

$ rake db:migrate RAILS_ENV=test1

$ rake db:migrate RAILS_ENV=test2

 

mongrel_clusterの設定をします。

mongrel_cluster1.yml,mongrel_cluster2.ymlを作成する。

# vi mongrel_cluster1.yml
 
 user: ユーザ名
 group: グループ名
 cwd: アプリケーションの絶対パス
 port: 3000
 environment: test1
 servers: 3
 
 
# vi mongrel_cluster2.yml
 
 user: ユーザ名
 group: グループ名
 cwd: アプリケーションの絶対パス
 port: 3003
 environment: test2
 servers: 3

ディレクトリを作る。

# mkdir /etc/mongrel_cluster

作ったディレクトリにmongrel_cluster1.yml, mongrel_cluster2.ymlを移動させる。

# cp mongrel_cluster1.yml /etc/mongrel_cluster/
# cp mongrel_cluster2.yml /etc/mongrel_cluster/

自動起動用スクリプトを/etc/init.d以下にコピー

 # cp /usr/local/lib/ruby/gems/1.8/gems/mongrel_cluster-1.0.5/
resources/mongrel_cluster /etc/init.d/mongrel_cluster
 # vi /etc/init.d/mongrel_cluster

を編集する。

#PID_DIR=/var/run/mongrel_cluster      #コメントアウト
#USER=mongrel                          #コメントアウト

自動起動に登録する。

# chkconfig --add mongrel_cluster
# chkconfig mongrel_cluster on

 

つぎにhttpd.confの設定をします。

# vi /usr/local/apache2/conf/httpd.conf

ProxyRequests Off
ProxyPreserveHost On
<Proxy *>
  Order Deny,Allow
  Allow from all
</Proxy>
RewriteEngine On
#RewriteRule ^/test1(.*)$ balancer://cluster1%{REQUEST_URI} [P,QSA,L]
#RewriteRule ^/test2(.*)$ balancer://cluster2%{REQUEST_URI} [P,QSA,L]
RewriteRule ^/test1(.*)$ balancer://cluster1%{$1} [P,QSA,L]
RewriteRule ^/test2(.*)$ balancer://cluster2%{$1} [P,QSA,L]
 
<Proxy balancer://cluster1>
 BalancerMember http://192.168.0.2:3000 loadfactor=10
 BalancerMember http://192.168.0.2:3001 loadfactor=10
 BalancerMember http://192.168.0.2:3002 loadfactor=10
</Proxy>
 
<Proxy balancer://cluster2>
 BalancerMember http://192.168.0.2:3003 loadfactor=10
 BalancerMember http://192.168.0.2:3004 loadfactor=10
 BalancerMember http://192.168.0.2:3005 loadfactor=10
</Proxy>

 

以上で設定は終わりです。

ブラウザでhttp://192.168.0.2/test1とhttp://192.168.0.2/test2と打って正常にアクセスできれば完了です。

ブックマークに追加する

KBMJのWebソリューション
Ruby on Rails Summer Festival 2008開催決定!!

TOPICS

2008/08/14
ZD Net Builder」の連載記事です。第七回は「Rubyでどう書く?:RubyCocoa+Core Animationでお手軽アニメーション」が掲載されました。

2008/08/06
ZD Net Builder」の連載記事です。第六回は「Rubyでどう書く?特別編:Matzからのお題」が掲載されました。

2008/07/29
アットマーク・アイティ」にケータイWebアプリ開発、9つの注意点が掲載されました。

2008/07/11
ZD Net Builder」の連載記事です。第五回は「Rubyでどう書く?:RubyでWord文書を作成する」が掲載されました。

全体のRoR最新ブログ一覧

プロフィール

  • fujishiro
  • 一人にでも参考になれば幸いです。

ブログの購読

RSS

timelog
株式会社ケイビーエムジェイロゴ