2016-08-31 6 views
0

Я использую sunpot_rails камень со следующей конфигурацией в sunspot.yml:Sunspot (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 

Он успешно читает другую port и pid_dir при изменении переменной TEST_ENV_NUMBER среды. Однако моя проблема заключается в том, что он всегда указывает на тот же каталог данных, и data_path не влияет. На самом деле создается пустой каталог, но solr admin показывает тот же путь. См. Ниже для использования /default/data.

Я знаю, что recent commit удалил эту конфигурацию, но я использую свою ветку.

enter image description here

ответ

0

Чтобы ответить на мой вопрос, я первый скажу, почему мне нужно изменить каталог данных из солнечных пятен конфигурационных файлов, а не из конфигурации Solr. Я хотел иметь несколько экземпляров Solr для параллельного запуска тестов с использованием parallel_tests gem.

Я понял, что требуется только 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