STERFIELD

2016/06/15

Ruby On Railsから既存アプリケーションのデーターベースに接続する

Ruby On Railsから既存アプリケーションのデーターベースに接続する

Ruby On Railsからphpなど他言語で作成された既存アプリケーションのデータベースアクセスするという実装を先日行ったので、その方法を記事にしてみました。
既存アプリケーションのデータベースに接続することを Legacy (existing) なデータベースに接続すると表現したりすることもあるようです。

Ruby On Railsのアプリケーションを作成する

Railsのapi用のアプリケーション生成もできますが、ここでは通常のものを用います。

database.ymlの設定を行う

モデルを生成する

既存のデータベースのそれぞれのテーブルに接続するためのモデルを生成します。
wordpressのpostテーブルにアクセスするモデルをPostとする場合、

を実行し、モデルを生成します。

モデルごとの設定を行う

ここまでくるとほぼ準備は終わりなのですが、
この状態でPost.find(1)などとrailsのActive Recodeを実行すると、Railsはpostsテーブルを探してそこに接続しようとしてしまうます。
なので、各モデルがどのテーブルに接続するか定義する必要があります。

モデル毎に接続するデータベースも切り替えることもできます。

以上で準備は完了!!

以上で準備は完了です。
rails console上で、
Post.find(10)とうってみるとRailsのActive Recodeが使えることが確認できます。
* Access denied for user ‘root’@’ホスト名 などと出たら接続先のデータベースでアクセスを許可する必要があります。

まとめ

  • wordpressやsymfony2で作成されたデータベースにもアクセスできます。phpで作られているアプリケーションのサブシステムをRailsで構築するときなどにも使われているようです。
  • RESTful apiをRailsを用いて作成している会社が多いですが、上記のように、他言語で生成したアプリケーションにもRailsから気軽にアクセスできて、なおかつ、簡単にjsonもはきだせるのでよく用いられているかもしれません。最近は専らGoが用いられることが多いらしいですが。
  • 他フレームワークでも可能だと思いますが、getter, setter等を作成せずに、RailsのActive Recodeを使用できるのはとても便利なように感じます。
  • Author Profile

    著者近影

    スターフィールド編集部

    SHARE

    合わせて読みたい