Rails じゃない project の rake で activerecord を使う。


Rails じゃない project の rake で activerecord を使う。

rails だと rake に db:drop, db:create, db:migrate などのタスクが実行できます。

Rails を使っていない project で 同様のタスクを定義してみました。

See https://github.com/katoy/using_ar

Database も 2 つ扱ってみています。

  Database: db1_development
    table: users
  Database: db2_development
    table: infos
のような DB / table を
  create、migrate、fixuter 読み込み、table 内容の表示
するタスクを定義しました。

$ rake -T dbs
rake dbs:create      # create database "db1_{AR_ENV}", "db2_#{AR_ENV}"
rake dbs:create_db1  # create database "db1_{AR_ENV}"
rake dbs:create_db2  # create database "db2_{AR_ENV}"
rake dbs:drop        # drop all table in database "db1_{AR_ENV}, db2_{AR_ENV}"
rake dbs:drop_db1    # drop all table in database "db1_{AR_ENV}
rake dbs:drop_db2    # drop all table in database "db2_{AR_ENV}
rake dbs:fixtures    # Load fixtures into "db1_#{AR_ENV}, db2_#{AR_ENV}",  Load specific fixtures using FIXTURES=x,y
rake dbs:migrate     # Migrate the database through scripts in db/migrate, Target specific version with VERSION=x
rake dbs:reset       # Reset db1, db2 (drop, create, migrate, fixtures)
rake dbs:show        # Show db1_#{AR_ENV}
rake dbs:show_db2    # Show db2_#{AR_ENV}

ファイル構成

├── Gemfile
├── Gemfile.lock
├── Rakefile
├── config
│   └── database.yml
├── db
│   └── migrate
│       ├── db1
│       │   └── 20150322042600_create_users.rb
│       └── db2
│           └── 20150322043000_create_infos.rb
├── log
└── test
    └── fixtures
        ├── db1
        │   └── users.yml
        └── db2
            └── infos.yml

Rails の db 関係のフォルダ構成を真似してます。

config/database.yml は Rails と同じ設定内容です。

RAILS_ENV の代わりに AR_ENV をつかって 環境 (productio/development/test) を切り替えられます。

password などは <%= ENV('AR_PASSWORD') %> と書いておくことができます。

(rake を実行する前に export AR_PASSOWRD="xxxx" のように設定しておきます)

db/migrateion には、 Database 毎に Folder を分けて置いています。

test/fixtures にも、 Database 毎に Folder を分けて置いています。