Бонсай-эластичный поиск-рельсы - не может требовать "эластичный поиск / рельсы / задачи / импорт"

Когда я бегу:

$ heroku run bundle exec rake environment elasticsearch:import:model CLASS='Artist' FORCE=true

ответ в терминале:

Running bundle exec rake environment elasticsearch:import:model CLASS=Artist FORCE=true on doremi... up, run.3015
Starting up a new ElasticSearch client with https://hexcode.bonsai.io
rake aborted!
NameError: uninitialized constant Elasticsearch
/app/vendor/bundle/ruby/2.0.0/gems/bonsai-elasticsearch-rails-0.0.4/lib/bonsai/elasticsearch/rails.rb:4:in `<top (required)>'
/app/vendor/bundle/ruby/2.0.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:85:in `require'
/app/vendor/bundle/ruby/2.0.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:85:in `rescue in block in require'
/app/vendor/bundle/ruby/2.0.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:68:in `block in require'
/app/vendor/bundle/ruby/2.0.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:61:in `each'
/app/vendor/bundle/ruby/2.0.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:61:in `require'
/app/vendor/bundle/ruby/2.0.0/gems/bundler-1.9.7/lib/bundler.rb:134:in `require'
/app/config/application.rb:16:in `<top (required)>'
/app/Rakefile:4:in `require'
/app/Rakefile:4:in `<top (required)>'
(See full trace by running task with --trace)

Ошибка возникает из-за этого оператора lib/tasks/elasticsearch.rake

require 'elasticsearch/rails/tasks/import'

Я проверил, что все мои elastic-* Самыми последними версиями драгоценных камней являются: 0.1.7 для рельсов эластичного поиска и модели эластичного поиска, 0.0.4 для рельсов эластичного бонсай, однако я заметил здесь https://rubygems.org/gems/bonsai-elasticsearch-rails которым бонсай-упругие рельсы зависят от комплектации 1.5, а Heroku использует 1.9.7, что, насколько я вижу, невозможно изменить. Может ли это быть суть вопроса?

У меня также есть аналогичная ошибка в моих журналах при попытке развернуть

Oct 09 17:04:27 doremi app/worker.1:  NameError: uninitialized constant Elasticsearch 
Oct 09 17:04:27 doremi app/worker.1:  rake aborted! 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bonsai-elasticsearch-rails-0.0.4/lib/bonsai/elasticsearch/rails.rb:4:in `<top (required)>' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:85:in `require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:85:in `rescue in block in require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:68:in `block in require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:61:in `each' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:61:in `require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler.rb:134:in `require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/config/application.rb:16:in `<top (required)>' 
Oct 09 17:04:27 doremi app/worker.1:  /app/Rakefile:4:in `require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/Rakefile:4:in `<top (required)>' 
Oct 09 17:04:27 doremi app/worker.1:  LoadError: cannot load such file -- bonsai-elasticsearch-rails 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:76:in `require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:76:in `block (2 levels) in require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:72:in `each' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:72:in `block in require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:61:in `each' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler/runtime.rb:61:in `require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/vendor/bundle/ruby/2.2.0/gems/bundler-1.9.7/lib/bundler.rb:134:in `require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/config/application.rb:16:in `<top (required)>' 
Oct 09 17:04:27 doremi app/worker.1:  /app/Rakefile:4:in `require' 
Oct 09 17:04:27 doremi app/worker.1:  /app/Rakefile:4:in `<top (required)>' 

1 ответ

Решение

Для rails/bundler гемы требуются в том порядке, в котором они объявлены в гемфайле. Эта ошибка произошла, потому что я объявлял bonsai-elasticsearch-rails выше elasticsearch-rails а также elasticsearch-model, Поэтому было решено путем объявления bonsai-elasticsearch-rails под двумя другими.

Другие вопросы по тегам