2016-08-31 36 views
0

我使用sunpot_rails寶石具有以下配置中sunspot.yml太陽黑子(Rails)的不兌現data_path配置

test: 
    solr: 
    hostname: localhost 
    port: <%= 8990 + (ENV['TEST_ENV_NUMBER'] || '1').to_i %> 
    path: /solr/test 
    pid_dir: solr/pids/test<%= ENV['TEST_ENV_NUMBER'] %> 
    data_path: solr/test<%= ENV['TEST_ENV_NUMBER'] %>/data 

它成功地讀不同portpid_dir當我改變了TEST_ENV_NUMBER環境變量。 但是我的問題是它總是指向相同的數據目錄,並且data_path沒有任何作用。實際上一個空目錄被創建,但solr管理員顯示相同的路徑。請參閱下面的/default/data正在使用。

我知道一個recent commit刪除了該配置,但我使用我自己的分支。

enter image description here

回答

0

回答我的問題,我會先告訴我爲什麼需要從太陽黑子配置文件更改數據的目錄,而不是從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