ruby-on-rails – 连接在Rspec中从solr拒绝
我使用太阳黑子轨进行搜索.这些是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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |