关于搜索宝石(searchkick gem)的次要版本更新时出现的elasticsearch宝石(elasticsearch gem)主要版本差异的问题

我认为有很多人使用searchkick这个gem来简化处理Elasticsearch,以便使用Elasticsearch。

当进行Searchkick的次要版本更新(仅更新“X.X.X”中的第三位版本号)时,出现了依赖的elasticsearch gem和Elasticsearch本体的主要版本不匹配的现象。

以下是对以上内容的中文本地化版本:
Elasticsearch主版本
6.2.4
搜索引擎升级后的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)所述,用于elasticsearch的依赖gem在执行bundle update时会被强制升级至5系或以上的版本。

不同版本的Elasticsearch和Elasticsearch gem不兼容是不理想的情况。

对策其实很简单,只需在Gemfile中明确以固定版本形式列出elasticsearch用的依赖gem,并进行bundle update即可。

gem 'elasticsearch', '~>6.1.0'

在我只固定了正在使用的 gem 的版本时,我放松了警惕,但通过这次事件我学到了不仅需要关注使用的 gem 的版本,还需要注意依赖 gem 的版本。