LoginSignup
5
4

More than 5 years have passed since last update.

Rails アプリケーション間での DB の共有 (SQlite)

Posted at

マスタ系レコードを共有しながら,業務系アプリケーションを複数作っていくなら必須の情報なんだが,あんまり話題になってるのを見たことがない.

MySQL が自分の環境的にどうにも鬼門でうまく動かせた試しがなく,そこを何とかしてる時間もないので,SQlite で無理矢理にでも動かす.

  1. 共通 DB の置き場を決め,各アプリケーションの database.yml から参照する.

例えば "app1", "app2" とアプリケーションと同じレベルに "shared_db" みたいなディレクトリを作ってそこに sqlite3 ファイルを設置する.

database.yml

  shared_db:
    adapter: sqlite3
    database: ../shared_db/shared_db.sqlite3
    pool: 5
    timeout: 5000
  ```2.  各モデルから 共通 DB に接続する.

  ``` company.rb

    class Company < ActiveRecord::Base
      establish_connection(:shared_db)
      
    end

親アプリの models 以下をロードパスに含める方法もあるようだが,結局,リレーションを宣言したりしないといけないので,DRY 原則には反するものの,子アプリでローカルファイルを持っていた方が分かりやすい.その際,必要最低限の表示用メソッドなどもコピーしておく必要がある.

  • 検討事項
    • 共通 DB のレコード更新用に別のアプリを起動させておき,子アプリからはそこへのリンクを貼るようにする.(美しくない)
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4