【发布时间】:2014-07-14 02:21:46
【问题描述】:
在 Linux Mint 16 上运行,我在这里按照以下指南:http://pivotallabs.com/rspec-elasticsearchruby-elasticsearchmodel/ 使用 Ruby on Rails 应用程序设置 elasticsearch。
当我运行 rspec 时,当它到达 spec_helper.rb 这一行时:
config.before :each, elasticsearch: true do
Elasticsearch::Extensions::Test::Cluster.start(port: 9200) unless Elasticsearch::Extensions::Test::Cluster.running?
end
我收到以下错误:
开始 2 个 Elasticsearch 节点..sh: 1: elasticsearch: not found
我认为这可能是路径问题....
所以我在 ~/.bashrc 中添加了以下内容:
export PATH="/etc/init.d:$PATH" 因为 sudo /etc/init.d/elasticsearch start 启动了 elasticsearch 服务。
然后我发出命令 source ~/.bashrc
这摆脱了 sh: 1: elasticsearch: not found 消息,取而代之的是 spec_helper.rb 中触发的错误消息:
............Starting 2 Elasticsearch nodes..
[!!!] Process failed to start (see output above)
F........
下面是我的 spec_helper.rb 文件中的配置块:
config.before :each, elasticsearch: true do
Article.__elasticsearch__.client = Elasticsearch::Client.new host: 'http://localhost:9200'
Article.__elasticsearch__.create_index!(force: true)
Article.__elasticsearch__.refresh_index!
Elasticsearch::Extensions::Test::Cluster.start(port: 9200) unless Elasticsearch::Extensions::Test::Cluster.running?
end
config.after :suite do
Elasticsearch::Extensions::Test::Cluster.stop(port: 9200) if Elasticsearch::Extensions::Test::Cluster.running?
end
关于问题可能是什么的任何想法?
编辑:如果我按照以下评论者的建议更改为端口 9250:
config.before :each, elasticsearch: true do
Article.__elasticsearch__.client = Elasticsearch::Client.new host: 'http://localhost:9250'
Article.__elasticsearch__.create_index!(force: true)
Article.__elasticsearch__.refresh_index!
Elasticsearch::Extensions::Test::Cluster.start(port: 9250) unless Elasticsearch::Extensions::Test::Cluster.running?
end
config.after :suite do
Elasticsearch::Extensions::Test::Cluster.stop(port: 9250) if Elasticsearch::Extensions::Test::Cluster.running?
end
我收到这个新错误:
An error occurred in an after hook
Faraday::ConnectionFailed: Connection refused - connect(2) for "localhost" port 9250
occurred at /home/nona/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:879:in `initialize'
F........
【问题讨论】:
-
您是否已经在测试之外运行了 Elasticsearch?我看到你在检查,但它是否检查了任何已经运行的 Elasticsearch 实例,或者测试助手正在做什么来跟踪它自己的集群?尝试将端口更改为 9250,看看是否可以正常启动。
-
感谢 MattC,新错误在上面 - 但我认为这是因为弹性搜索仍在 9200 上运行...如果我在浏览器中导航到 localhost:9200,我会得到 200 状态。跨度>
-
嘿@Nona,你解决问题了吗?我现在正在发生这种情况,令人惊讶的是,我在网上找不到解决方案
-
嘿 @AlexandreWiechersVaz,通过 Ruby Weekly 233 找到此链接:binarywebpark.com/…
标签: ruby-on-rails ruby rspec elasticsearch