我最近将我的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。
1条答案
按热度按时间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中指定提交
另一个建议是一次升级一个主要版本的Ruby。