19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CircleCI で db:seed の情報を使用する

Posted at

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 が無ければ作成し、以下の項目を記載してください。

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 を例に挙げておきます。

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 タスクを用意している方や、その他のデータベース関連処理を行いたい場合は、ここに記載して行うと良さそうです。

参考サイト

19
17
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
19
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?