TL;DR
- やりたいこと
- OS: CentOS 7
- アプリ: Ruby on Rails 6
- DB: PostgreSQL(別アプリと共用)
- yumでPostgreSQLインストールしたらは9.2系が入った
- Rails6からは9.3以上を使う必要があった
- PostgreSQLを9.6系に上げた
- 9.3以上を使えというメッセージが出た
- は?
- 結論(忙しい人用)
Rails6で使えるPostgreSQLは9.3以上
CentOS7上でRails6のアプリを作成し、DBにPostgreSQLを利用しようと諸々インストールを行いました。
ちなみに構築しようとしている環境は開発用なので別サーバで動いている別のアプリが使っているものを流用しようとしました。(*1)
それがすべての元凶とも知らずに。
今回たてるサーバのPostgreSQLはとりあえずyumで入れました。
$ yum install postgresql-devel
$ psql -v
#=> 9.2.22
とりあえず9.2系が入ったらしいのでbundle install諸々やって bundle exec rails s
で起動
$ bundle exec rails s
#=> Your version of PostgreSQL (9.2.22) is too old. Active Record supports PostgreSQL >= 9.3.
9.3以上のPostgreSQLを使えとのこと。
ちなみにこの辺はRailsウォッチ20181210にも書かれている。
最新版のPostgreSQLを入れる
CentOS7.3にPostgreSQL9.6.3をインストールしてみたを参考にしつつ9.6.3をインストール。
$ psql -v
#=> 9.6.3
改めてRailsサーバを起動
$ bundle exec rails s
#=> Your version of PostgreSQL (9.2.22) is too old. Active Record supports PostgreSQL >= 9.3.
は?
結論
ここでRailsが警告を出していたのはPostgreSQLのクライアントではなくPostgreSQLのサーバのバージョンでした。
なので、*1のところで出てきた「別サーバで動いている別のアプリが使っている」PostgreSQLのバージョンを上げる必要がありました。
別で立てるのが面倒だったので流用しようとしたのですが、横着はいけないですね~。