messaliberty

hulor と開発チームの最新情報

Posts Tagged ‘tips’

[Ruby] ActiveRecord で複数のデータベースに接続する方法

2月 16th, 2009 投稿者: ice

時々1つのアプリケーションから複数のデータベースにアクセスする必要に迫られることがあります。
たとえば、他のアプリの作ったデータベースにアクセスしたい場合とか。
でも、ActiveRecord のサンプルプログラムのほとんどは、 ActiveRecord::Base に直接設定をセットしているし、
ActiveRecord::Base を使ってコネクションを作成しているので、複数のデータベースの接続を AR をつかって張ることができないです(やりにくい)。
ではどうするか?

ただ、ActiveRecord のサブクラスを作成するだけです。

ActiveRecord::Base のサブクラスは親クラスの読み込んだ設定や、データベースへの接続へアクセスできるので、
まず ActiveRecord::Base のサブクラスを作成して(ここでは BaseDB)これにデータベースの設定をセットします。
それから、 BaseDB を継承した子クラスを作って、その子クラスにそれぞれデータベースへの接続を張らせます。
たぶん、ActiveRecord::Base に直接設定をセットしたり、ActiveRecord::Base で直接データベースへの接続を張るよりも、
子クラスの方でなんとかした方が良さそうです。とくに将来複数のデータベースとかを扱う状況になるかもしれない場合・・・。 (続きを読む…)

DAO についての勘違い

1月 16th, 2009 投稿者: ice

しくった・・・。

今まで、DAO について重大な勘違いをしていたらしい・・・。それもここ10年ほど。
さっきまで、Microsoft の DAO(Data Access Objects) と、デザインパターンの DAO が違うなんて知らなかった。

Wikipedia : Data Access Object

なお、マイクロソフト16のライブラリとして Data Access Objects17 というものがあるが、直接の関係はない。

いままで、DAO って言葉をデザインパターンの DAO のつもりで使ってたけど、ボクの頭の中にあったのは Microsoft の Data Access Objects の挙動だった。

たまに、データベース周りの話をしてるときに、混乱したり、話がかみ合わなかったりしたことがあったけど、その理由がやっと今わかった。

我流プログラマーだから、こんなことがかなりよくある気がする。
もっと他のプログラマーたちと技術トークをしないとなぁ・・・。