Ruby 3.1中的ElasticSearch出现参数错误

rjzwgtxy  于 2022-10-06  发布在  Ruby
关注(0)|答案(1)|浏览(212)

我最近将我的Rails应用程序的Ruby版本从2.7升级到3.1,但在那之后,我面临着与ElasticSearch相关的问题。当我启动ElasticSearch服务器并运行以下命令时:

RAILS_ENV=development bundle exec rake environment elasticsearch:import:model CLASS='ClinicalEquivalence' FORCE=y

它给了我一个论点错误。下面是错误堆栈:

ArgumentError: wrong number of arguments (given 1, expected 0)
Users/apple/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/activerecord-6.1.5/lib/active_record/relation/batches.rb:128:in `find_in_batches'
Users/apple/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/activerecord-6.1.5/lib/active_record/querying.rb:22:in `find_in_batches'
Users/apple/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/bundler/gems/elasticsearch-rails-dbd617ecc25c/elasticsearch-model/lib/elasticsearch/model/proxy.rb:96:in `method_missing'

下面是我正在使用的ElasticSearch gem的快照:

elasticsearch (6.8.1)
elasticsearch-api (= 6.8.1)
elasticsearch-transport (= 6.8.1)
elasticsearch-model (6.1.1)
elasticsearch-rails (6.1.1)

它在以前的Ruby版本中工作得很好,但在3.1版中突然被打破了。我怀疑这是因为Ruby 3.1中不推荐使用最后一个参数作为关键字参数。请让我知道,如果有人知道如何我可以修复这个最好不用升级我正在使用的ElasticSearch。

uurity8g

uurity8g1#

他们实际上修复了ElasticSearch-rails 6.1.1中的这个错误,如下所示https://github.com/elastic/elasticsearch-rails/blob/6.1.1/CHANGELOG.md

但如果你调查一下上传的gem中的文件,你会发现他们没有推动这一更改,可能是偶然的?https://my.diffend.io/gems/elasticsearch-rails/6.1.0/6.1.1

处理它的最佳方法是在Gemfile中指定提交

gem 'elasticsearch-rails', git: "https://github.com/elastic/elasticsearch-rails", tag: "6.1.1", ref: "f22d97e0cd629475bed48be3b1219741a46ba4b9"

另一个建议是一次升级一个主要版本的Ruby。

相关问题