RSPEC在手动重新安装时无法找到弹性搜索(没有自制软件)

时间:2016-01-09 00:14:13

标签: ruby-on-rails ruby elasticsearch rspec facets

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

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)

为了开始从facet迁移到聚合,我必须让rspec工作。在此先感谢您的帮助。我已经为我的弹性搜索位置设置了一个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

2 个答案:

答案 0 :(得分:2)

通过查看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?

答案 1 :(得分:0)

尝试SELECT ... ISNULL(t.TWR, 0) TWR, ISNULL(t.MarketValue, (SELECT MarketValue FROM Table inner WHERE inner.Date <= t.Date ORDER BY t.Date DESC) MarketValue FROM Calendar c WITH (NOLOCK) LEFT JOIN Table t ON t.Date=c.Date WHERE c.Date >= @StartDate AND c.Date < @EndDate