CircleCI の database 処理について
CircleCI は、通常 db:crate と db:schema:load しか行わないようです。具体的には以下のような処理をしています。
$ mkdir -p config
echo 'test:
host: localhost
username: ubuntu
database: circle_ruby_test
adapter: mysql2
' > config/database.yml
$ bundle exec rake db:create db:schema:load --trace
つまり CircleCI では、db:seed の処理が行われません。何らかの理由でテストのデータベース処理に db:seed を処理に含めたい場合、以下の様な手順を踏みます。
database.yml の作成と、db:seed を含めて database 初期化を行うための設定を circle.yml に追加する
CircleCI の公式ドキュメントに記載されている database configuration を参考にして設定します。Configuring CircleCI #database
リポジトリのルートに ./circle.yml が無ければ作成し、以下の項目を記載してください。
database:
override:
- mv config/database.ci.yml config/database.yml
- bundle exec rake db:create db:migrate db:seed --trace
リポジトリに CircleCI 用の database.yml が既に用意されている場合は、上述の通りコピーして config/database.yml を作れば良いです。
用意されていない場合は、CircleCI の通常の挙動として記載した処理を参考に mkdir, echo 処理を行うか、次の手順のように database.ci.yml を作成します。
CircleCI 用の database.yml (config/database.ci.yml) を作る
実際に作成したdatabase.ci.yml を例に挙げておきます。
default: &default
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
development:
<<: *default
database: hoge_dev
test:
<<: *default
database: hoge_test
mysql2 の場合、username, password, database 名は何でも良いようです。対応しているデータベース、およびデータベースのユーザ名/password 等の情報については、以下のドキュメントを参照してください。Test environment #database
db:seed 以外の処理について
database 初期化処理の configuration では、好きなコマンドを実行できます。独自の rake タスクを用意している方や、その他のデータベース関連処理を行いたい場合は、ここに記載して行うと良さそうです。