回答我的問題,我會先告訴我爲什麼需要從太陽黑子配置文件更改數據的目錄,而不是從Solr的配置。 我想要使用parallel_tests gem並行運行測試的多個Solr實例。
我發現只需要1個Solr實例。然而,並行測試可以通過1個運行實例來實現,但可以通過多個Solr核心來實現。 要添加更多內核做到這一點,你需要更新solr/solr.xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
<cores adminPath="/admin/cores" host="${host:}" hostPort="${jetty.port:}">
<core name="default" instanceDir="." dataDir="default/data"/>
<core name="development" instanceDir="." dataDir="development/data"/>
<core name="test" instanceDir="." dataDir="test/data"/>
<core name="test2" instanceDir="." dataDir="test2/data"/>
<core name="test3" instanceDir="." dataDir="test3/data"/>
<core name="test4" instanceDir="." dataDir="test4/data"/>
<core name="test5" instanceDir="." dataDir="test5/data"/>
<core name="test6" instanceDir="." dataDir="test6/data"/>
<core name="test7" instanceDir="." dataDir="test7/data"/>
<core name="test8" instanceDir="." dataDir="test8/data"/>
</cores>
</solr>
然後重新啓動Solr的創建這些新的內核:
RAILS_ENV=test bundle exec rake sunspot:solr:restart
然後由環境變量附加到路徑修改config/sunspot.yml
:
test:
solr:
hostname: localhost
port: 8981
log_level: DEBUG
path: /solr/test<%= ENV['TEST_ENV_NUMBER'] %>
現在無論何時運行並行測試,都會選擇相應的路徑/核心:
bundle exec rake parallel:spec