2014-08-28 2 views
0

Рельсы 3.2.18 с мышлением 3.1.1 передаются из режима разработки в производство. В процессе, в то время как любой из следующих работ:Мышление Sphinx, не обращающееся к местному индексу

bundle exec rake ts:rebuild 
bundle exec rake ts:index 
bundle exec rake ts:stop 
bundle exec rake ts:start 

поиски заканчивающегося с

ActionView::Template::Error (unknown local index [...] 

Первоначально я понял, что я мастерил 2 поиска ИДП работает на приложения, поскольку разработка была каталог shared в котором указываются сфинкс и файл tmp/pid. Это переносилось и, следовательно, создавало две ячейки: одну из общей папки, другую в общей папке выпуска приложения. Duh!

еще ps aux | grep searchd возвращается два процесса для
/fna/shared/config/development.sphinx.conf ИОКи делает не матч, что в общей папке, и они называют развития Еще одно приложение, все еще в разработке (!) Также имеет два процесса

1) Нормально ли иметь два процесса?
2) как получить начальные значения для production.shpinx.conf (и избавиться от случайного загрязнения)?

Я понимаю, что это может также повлиять на развертывание capistrano и приветствовало бы предложения по правильному решению.

Update ps ax | grep "searchd" дал соответствующие активные ИДП к

kill 99335 

побежал

RAILS_ENV=production bundle exec rake ts:rebuild 
[...] 
Started searchd successfully (pid: 7086) 

Теперь два ИДП находятся в соответствующей среде

shared/config/production.sphinx.conf 

и перераспределяются. с успехом. поэтому оставшиеся сомнения находятся в развертывании capistrano. Учитывая, что индексирование выполняется каждую ночь (и является приемлемым в качестве такового), должна включать в себя файл deploy.rb:

invoke_command "cd #{release_path} && RAILS_ENV=#{rails_env} bundle exec rake ts:rebuild" 

ответ

1

Вам не нужно запускать ts:rebuild после каждого Deploy - это как db:migrate, это нужно только когда вы изменяете структуру своих индексов или добавляете/удаляете индексы. Если вы просто хотите обновить данные в индексах, используйте задачу ts:index (как вы делаете это регулярно).

Необходимо убедиться, что ваш paths are set up correctly гарантирует, что все производственные файлы Sphinx находятся за пределами конкретной директории выпуска - лучше всего разместить их в общей папке или чем-то подобном (вместо того, чтобы полагаться на символические файлы). Если это все настроено, тогда никакие задачи TS не должны выполняться как часть развертывания.

Также: Мышление Sphinx v3 использует рабочих Sphinx threaded, поэтому всегда есть как минимум два процесса: один из которых является ведущим, а другой - первым. Если есть более параллельные соединения, то есть больше процессов поиска.

+0

Отлично: спасибо за рассеиватель тумана! – Jerome

Смежные вопросы