ActiveRecordを使って複数DBにアクセスする(準備編)

Posted on December 01, 2017 06:00
Share on:

この記事は、株式会社ケーシーエスキャロット アドベントカレンダーの1日目の記事です。

Rubyの部署に所属しているemorimaです。

今年は、会社支援で RubyKaigi 2017 と、Ruby World Conferenceに参加させてもらいました。

また、株式会社ケーシーエスキャロットは、10月に開催した Rails Girls Tokyo 8th でもスポンサーや、Asakusa.rb の会場にもなっております。

Rubyの会社ではなく、組み込み系やスマフォアプリ作成の仕事もしています。
昨年から、ETロボコンにも参加している社員もいるので、この後のどこかでお話が聞けるかな~

さて、これから、ActiveRecordを使って複数DBにアクセスするプログラムを作っていこうと思います。
前に作った時に、うまく接続が切り替わらずに、色々調べることになったので、
その内容を書いていこうと思います。

今日は準備から。

Databaseの作成は、Railsを使って簡単に作ってしまいましょう!

環境

Ruby ruby 2.5.0dev (2017-11-30 trunk 60945) [x86_64-linux]
Rails 5.1.4
Database mysql Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64)

データベース作成

rails コマンドで、新規アプリを作ります。

1
2
$rails new multi_connect -d mysql
$cd multi_connect

Gemfile 上の 18行目の uglifier のコメントを外して、users テーブルを作ります。

1
2
3
$rails g scaffold user name:string
$rails db:create
$rails db:migrate

別のDatabaseを作ります。

config/database.yml のdatabase定義を変更して、 rails db:create, rails db:migrate を実行します。

そして、2つのデータベースにデータを登録しておきます。
同じデータを登録すると、正しく接続したかがわからないため、
私は、’taro’, ‘jiro’ で分けて登録しました。

データベース1

1
2
3
4
5
6
7
8
MariaDB [multi_connect_development]> select * from users;
+----+--------+---------------------+---------------------+
| id | name   | created_at          | updated_at          |
+----+--------+---------------------+---------------------+
|  1 | taro-1 | 2017-11-30 11:44:53 | 2017-11-30 11:44:53 |
|  2 | taro-2 | 2017-11-30 11:44:53 | 2017-11-30 11:44:53 |
+----+--------+---------------------+---------------------+
2 rows in set (0.00 sec)

データベース2

1
2
3
4
5
6
7
8
MariaDB [other_multi_connect_development]> select * from users;
+----+--------+---------------------+---------------------+
| id | name   | created_at          | updated_at          |
+----+--------+---------------------+---------------------+
|  1 | jiro-1 | 2017-11-30 11:45:15 | 2017-11-30 11:45:15 |
|  2 | jiro-2 | 2017-11-30 11:45:15 | 2017-11-30 11:45:15 |
+----+--------+---------------------+---------------------+
2 rows in set (0.00 sec)

さて、準備はできました。
次は、実際に接続するRubyプログラムを書いていきましょう。

明日は、「ActiveRecordを使って複数DBにアクセスする(その1)」になります。