RSPEC 手动重新安装时找不到 elasticsearch(没有自制软件)

RSPEC can't find elasticsearch when reinstalled manually (without homebrew)

我已经研究这个问题几个星期了。我正在开发的 rails 应用程序使用 elasticsearch 1.5。我用自制软件管理 elasticsearch,它将我的 elasticsearch 升级到 2.x。该应用程序无法使用这个最新版本的 elasticsearch,并且搜索功能完全停止工作(由于不推荐使用 facets)。虽然计划在接下来的几个月内迁移到聚合,但我还有其他问题需要解决,所以我 brew 卸载了更新版本的 elasticsearch。我们的应用程序版本无法通过自制软件获得,因此我在网上找到它并使用 zip 下载并安装了它。搜索功能再次与应用程序一起使用,但现在 rspec 找不到 elasticsearch 并且根本无法运行。它说 elasticsearch 正在启动但随后抛出错误:

Starting 1 Elasticsearch nodes...sh: elasticsearch: command not found. 

& 然后这个错误:

/.rvm/gems/ruby-2.0.0-p643/gems/elasticsearch-extensions-0.0.18
    /lib/elasticsearch/extensions/test
    /cluster.rb:240:in `sleep': execution expired (Timeout::Error)

为了开始从构面迁移到聚合,我必须 rspec 开始工作。在此先感谢您的帮助。我已经为我的 elasticsearch 位置设置了一个 bash 别名。我的猜测是 rspec 没有找到手动安装的版本,但我不清楚在哪里处理这个问题。

spec_helper code:

def start_es_server
  Elasticsearch::Extensions::Test::Cluster.start(nodes: 1) unless   Elasticsearch::Extensions::Test::Cluster.running?

  # create index(s) to test against.
  create_es_index(Item)
end

def stop_es_server
  Elasticsearch::Extensions::Test::Cluster.stop if Elasticsearch::Extensions::Test::Cluster.running?
end

RSpec.configure do |config|
  config.include Capybara::DSL
  config.mock_with :rspec
  config.use_transactional_fixtures = true
  config.infer_spec_type_from_file_location!

  config.raise_errors_for_deprecations!  

  config.expect_with(:rspec) { |c| c.syntax = [:should, :expect] }
  config.mock_with :rspec do |mocks|
    mocks.syntax = [:should, :expect]
    mocks.verify_partial_doubles = true
  end

我通过查看 https://github.com/elastic/elasticsearch-ruby/blob/b3cfdcbde678c2704c0a557a163782b9e027d144/elasticsearch-extensions/lib/elasticsearch/extensions/test/cluster.rb 找到了这个问题的答案。可以传递给 start 方法的可选参数列表包括一个名为 :command 的参数,默认为 'elasticsearch.' 这可以用指向您的 elasticsearch 位置的直接路径覆盖:

elasticsearch = '/usr/local/elasticsearch-1.5.2/bin/elasticsearch'
Elasticsearch::Extensions::Test::Cluster.start(nodes: 1, command: elasticsearch) unless Elasticsearch::Extensions::Test::Cluster.running?

尝试chmod u+x /usr/local/elasticsearch-1.5.2/bin/elasticsearch