加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 连接在Rspec中从solr拒绝

发布时间:2020-12-16 22:39:07 所属栏目:百科 来源:网络整理
导读:我使用太阳黑子轨进行搜索.这些是Rspec看起来像: describe "GET search" do before(:all) do system("rake","sunspot:solr:start") end after(:all) do system("rake","sunspot:solr:stop") end it "should do some search" do Text.search do ... end ende
我使用太阳黑子轨进行搜索.这些是Rspec看起来像:
describe "GET search" do
  before(:all) do
    system("rake","sunspot:solr:start")
  end

  after(:all) do
    system("rake","sunspot:solr:stop")
  end

  it "should do some search" do
    Text.search do
      ...
    end
  end
end

但它不行.我失败了

Errno::ECONNREFUSED:
   Connection refused - connect(2)

但是如果我输入rake sunspot:solr:启动RAILS_ENV =手动在命令行中测试,然后运行spec,它通过.

怎么了?不是耙子太阳黑子:solr:在测试模式下启动RAILS_ENV =测试相当于系统(“rake”,“sunspot:solr:start”)?

(我试过`system(“rake”,“sunspot:solr:start RAILS_EVN = test”)同样的)

解决方法

你之前(所有)可能只是没有给Solr足够的时间开始.

也就是说,你可能想要想一想你们在这里要求你的规范进行验证.您可以通过像Fakeweb这样的图书馆嘲笑Solr来打电话.

Pivotal Labs还有一个名为sunspot_matchers的库,可以捕获更多关于您正在调用的搜索的细粒度的断言.

如果您要针对Solr进行真正的集成规范,我建议您在工作时保持测试Solr运行.像Foreman这样的工具可以帮助您管理您的Solr流程.我可能会使用如下的Procfile:

solr_dev:  rake sunspot:solr:run RAILS_ENV=development
solr_test: rake sunspot:solr:run RAILS_ENV=test

(开发当然是默认环境,如果没有RAILS_ENV另外提供给工头开始)

最后,如果要在您的规格中启动Solr,您已经在正确的轨道上.只要在那里放松一下睡眠,让Solr在您的规格开始运行前完全启动.如果系统处于负载状态时,如果在您的规格套件中引入了一些不可预知的故障,那就别惊讶.

[编辑:快速和肮脏之前:所有使用Sunspot.remove_all轮询可用性.]

before :all do
  `sunspot-solr start`
  begin
    Sunspot.remove_all!
  rescue Errno::ECONNREFUSED
    sleep 1 && retry
  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读