CircleCIでno-localeなPostgreSQLのDBを作成する

  • 6
    Like
  • 0
    Comment
More than 1 year has passed since last update.

Collate=CのPostgreSQLデータベースとは?

PostgreSQLで感覚的に正しい日本語ソートを行うにはinitdb時に--no-localeオプションを付けて初期化を行う必要がある。CircleCIではデフォルトでUTF-8なので正しくテストを実行することができない可能性がある。

強制的にno-localeなDBを作り直す

circle.ymlに次のように指定することでno-localeなDBを強制的に再作成することができる。

machine:
  ruby:
    version: 2.2.1
  pre:
    - sudo locale-gen ja_JP.UTF-8
    - sudo -E -u postgres PGDATA=/var/lib/postgresql/9.4/main /usr/lib/postgresql/9.4/bin/pg_ctl stop
    - sudo -E -u postgres rm -r /var/lib/postgresql/9.4/main
    - sudo -E -u postgres PGDATA=/var/lib/postgresql/9.4/main /usr/lib/postgresql/9.4/bin/initdb --encoding=UTF8 --no-locale --username=ubuntu
    - sudo -E -u postgres PGDATA=/var/lib/postgresql/9.4/main /usr/lib/postgresql/9.4/bin/pg_ctl start
  timezone:
    Asia/Tokyo