2016-08-31 3 views
0

Ich verwende sunpot_rails Juwel mit folgendem config in sunspot.yml:Sunspot (Rails) ehrt nicht Data_Path Konfiguration

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 

Es wird erfolgreich verschiedene port und pid_dir lesen, wenn ich die TEST_ENV_NUMBER Umgebungsvariable ändern. Mein Problem ist jedoch, dass es immer auf das gleiche Datenverzeichnis zeigt und data_path keinen Effekt hat. Eigentlich wird ein leeres Verzeichnis erstellt, aber solr admin zeigt den gleichen Pfad an. Siehe unten für /default/data wird verwendet.

Ich bin mir bewusst, dass ein recent commit diese Konfiguration entfernt, aber ich benutze meinen eigenen Zweig.

enter image description here

Antwort

0

meine Frage zu beantworten, werde ich zunächst sagen, warum ich das Datenverzeichnis von den sunspot Konfigurationsdateien ändern muß, anstatt von solr Konfiguration. Ich wollte mehrere Instanzen von Solr haben, um Tests parallel unter Verwendung der parallel_tests gem zu laufen.

Ich fand heraus, dass nur 1 Solr-Instanz benötigt wird. Parallele Tests können jedoch durch 1 laufende Instanz, aber mit mehreren Solr-Kernen durchgeführt werden. Dazu müssen Sie solr/solr.xml aktualisieren müssen durch mehr Kerne hinzu:

<?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> 

Dann Solr neu starten, die neuen Kerne zu erstellen:

RAILS_ENV=test bundle exec rake sunspot:solr:restart 

Ändern Sie dann config/sunspot.yml durch Anhängen der Umgebungsvariable auf den Weg:

test: 
    solr: 
    hostname: localhost 
    port: 8981 
    log_level: DEBUG 
    path: /solr/test<%= ENV['TEST_ENV_NUMBER'] %> 

Wenn Sie nun die parallelen Tests ausführen, wird der entsprechende Pfad/Kern ausgewählt:

bundle exec rake parallel:spec 
Verwandte Themen