最近,我将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宝石的快照:
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中,它运行得非常好,但突然在V3.1中崩溃了。我怀疑这是因为在ruby3.1中使用最后一个参数作为关键字参数是不可取的。如果有人知道如何解决这个问题,请告诉我,最好不用升级我正在使用的elasticsearch。
发布于 2022-10-02 05:39:24
实际上,他们在elasticsearch-rails 6.1.1中修复了这个bug,如https://github.com/elastic/elasticsearch-rails/blob/6.1.1/CHANGELOG.md中所示
但是,如果你调查上传的创业板中的文件,你会发现它们没有推动这一改变,可能是意外的?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。
https://stackoverflow.com/questions/73901954
复制相似问题