关于搜索宝石(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 的版本。