CircleCIでMySQLを使う(Padrino)

PadrinoアプリでActiveRecordを介してMySQLに接続しているのですが
これをCircleCIで用意しているMySQLにつなげる方法のメモ。

基本設定となるcircle.ymlは以下の様になっています。

1
machine:
  timezone:
    Asia/Tokyo
  ruby:
    version:
      2.2.0
  environment:
    RACK_ENV: test
  services:
    - mysql
dependencies:
  override:
    - bundle install
database:
  override:
    - mv config/database.yml.ci config/database.yml
    - bundle exec rake ar:create ar:schema:load
test:
  post:
    - bundle exec rake test
  • mysqlを利用させてもらう
  • 各種bundle系コマンドを指定

といった部分は特に説明がいらなそうですが
データベース用ymlファイル(後述)をCircleCI用に用意しておいて、CIを回す際に置き換えるのがポイントです。

続いて、config/database.rbの設定。
必要な設定ではありませんが、Railsなどと融通しやすくするためにconfig/database.ymlを読む設定にしています。

1
ActiveRecord::Base.configurations = YAML.load(ERB.new(File.read(Padrino.root('config', 'database.yml'))).result).with_indifferent_access

cf. Padrinoでアプリ作る時もdatabase.ymlを作った方がよかった - くりにっき

最後に、config/database.yml.ci。CircleCIが用意してくれるMySQL環境への接続は以下の設定でOKです。

1
test:
  adapter: mysql2
  encoding: utf8
  database: app_test
  pool: 5
  username:
  password:

ここまでの設定で、無事にCircleCIでテストコードが実行されるようになりました。