bonsai-elasticsearch-rails - 不能要求'elasticsearch/rails/tasks/import'

oli*_*der 4 heroku elasticsearch heroku-toolbelt ruby-on-rails-4 bonsai-elasticsearch

当我跑:

$ heroku run bundle exec rake environment elasticsearch:import:model CLASS='Artist' FORCE=true
Run Code Online (Sandbox Code Playgroud)

终端的响应是:

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)
Run Code Online (Sandbox Code Playgroud)

该错误似乎源自此require语句 lib/tasks/elasticsearch.rake

require 'elasticsearch/rails/tasks/import'
Run Code Online (Sandbox Code Playgroud)

我已经检查过我的所有elastic-*宝石都是他们最新的版本:弹性搜索轨道和弹性搜索模型0.1.7,盆景弹性搜索轨道0.0.4,但我注意到这里https://rubygems.org/ gems/bonsai-elasticsearch-rails,bonsai-elastic-search rails依赖于bundler 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)>' 
Run Code Online (Sandbox Code Playgroud)

oli*_*der 5

rails/bundler需要宝石按照它们在gemfile中声明的顺序.发生此错误是因为我在bonsai-elasticsearch-rails上面声明elasticsearch-rails并且elasticsearch-model.因此,通过宣布bonsai-elasticsearch-rails其他两个来解决它.