Elasticsearchを利用するために、searchkickというElasticsearchを簡単に扱えるようにしたgemを介して利用されている方も多いと思う。
searchkickのマイナーバージョンアップデート(「X.X.X」の3桁目のみをバージョンアップ)を実施した際、
その依存gemであるelasticsearch用gemのメジャーバージョンとElasticsearch本体のバージョンがズレるという現象が発生した。
Elasticsearch本体のバージョン
6.2.4
searchkickマイナーバージョンアップデート後のelasticsearch用gemのバージョン
elasticsearch (7.1.0)
elasticsearch-api (= 7.1.0)
elasticsearch-transport (= 7.1.0)
原因は、searchkick依存gemであるelasticsearch用gemのバージョン指定が、5系以上という指定になっていた事だ。
明確には以下の通り。
gem dependency searchkick
Gem searchkick-3.1.3
activemodel (>= 4.2)
bundler (>= 0, development)
elasticsearch (>= 5)
hashie (>= 0)
minitest (>= 0, development)
rake (>= 0, development)
実行結果に、elasticsearch (>= 5)
とある通り、依存gemであるelasticsearch用gemは、
bundle updateすると、強制的に5系以上のバージョンにアップデートされるような設定になっている。
Elasticsearch本体が6系なのにelasticsearch用gemが7系のバージョンという風にズレるのは宜しくない。
※elasticsearch本体とgemの互換性について
対策は以外とシンプルだが、Gemfileに対して依存gemであるelasticsearch用gemの記述をバージョン固定形式で明記し、bundle updateするだけで良かった。
gem 'elasticsearch', '~>6.1.0'
利用しているgemのみバージョン固定すれば大丈夫だと油断していたが、利用しようとしているgemの依存gemのバージョンにも気を配らないといけない事を、今回の一件で学んだ。