とーますメモ

Ruby on Rails / Goなどの学習メモ

【CircleCI2.0】困った!RailsとMySQLのconfig.yml設定

CircleCI2.0の公式サイトを見ると、PostgreSQLについての設定例はあるのだが
一番知りたいMySQLの設定例が無い。

circleci.com

そして、自分は今回初めてCircleCIを利用する初心者。

そして色んなサイトを参考にしようと、調べては見るものの
自分がよくわかっていないからか、設定ができるまでに
凄い時間がかかった。

最終的に設定したものがこれ。

config.yml

...
     docker:
        - image: circleci/ruby:2.4.1-node-browsers
          environment:
            RAILS_ENV: test
            DB_HOST: 127.0.0.1
            DB_USERNAME: 'root'
            DB_PASSWORD: ''

        - image: circleci/mysql:5.7
        ...


database.yml

default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  socket: /tmp/mysql.sock

test:
  <<: *default
  username: <%= ENV['DB_USERNAME'] || 'xxxxxxxxxx' %>
  password: <%= ENV['DB_PASSWORD'] || 'ppppppppp' %>
  host: <%= ENV['DB_HOST'] || 'localhost' %>
  database: dummy_test


ポイントは以下の2点

  1. rubyのimageに設定するenvironment(環境変数)は、railsのdatabase.yml内で使用できるという点
  2. database.ymlのhostには「127.0.0.1」が設定されるようにする。localhostだとエラーになる。

またdatabase.yml内の'xxxxxxxxxx'と、'ppppppppp'の箇所には、
それぞれローカル環境で使用する「ユーザ名」と「パスワード」を設定する。
そうすれば、この設定だけでローカルでもCircleCIでもテストができる。

[参考リンク]

discuss.circleci.com
discuss.circleci.com