sunspot_rails не читает sunspot.yml для своей конфигурации

Я пытаюсь использовать солнечное пятно с монгоидом, но солнечное пятно не подключается к Solr. Следующая ошибка, о которой сообщает Rails при попытке подключения к Solr.

Errno::ECONNREFUSED (Connection refused - connect(2))

Я использую bundle exec rake sunspot:solr:start для запуска Solr, и я подтвердил, что Solr работает на порте разработки (8982), как указано в config/sunspot.yml

Когда я запускаю Sunspot.config в консоли Rails, я вижу, что:

   @properties={:url=>"http://127.0.0.1:8983/solr"}

Затем я изменил порты разработки/производства на 8984/8985, Solr начинает с нового порта разработки (8984), но Sunspot.config в консоли Rails по-прежнему возвращает http://127.0.0.1:8983/solr (ни 8984, ни 8985, что означает, что он не читает sunspot.yml в все)

Я пропустил какие-то шаги по инициализации Sunspot в Rails?

Я использую следующие версии:

  • рубин 1.9.3
  • рельсы (3.2.1)
  • солнечное пятно (1.3.0)
  • солнечные пятна (1.3.0)
  • солнечное пятно_монгоид (0.4.1)

person goofrider    schedule 07.02.2012    source источник


Ответы (3)


Отвечая на мой собственный вопрос. На самом деле моя проблема оказалась sunspot_mongoid, который не поддерживает рельсы при установке в качестве драгоценного камня, мне пришлось добавить его в проект рельсов в качестве плагина рельсов, который затем правильно загружает config/sunspot.yml

person goofrider    schedule 10.02.2012
comment
Как добавить этот драгоценный камень в качестве плагина? - person Rafiu; 21.06.2012

Вы вышли из консоли, запустили ее снова и проверили?

person DeathHammer    schedule 07.02.2012

У меня была аналогичная проблема при попытке использовать sunspot_index_queue из консоли, и оказалось, что sunspot не получает необходимую конфигурацию из sunspot_rails (который получает ее из вашего sunspot.yml). Небольшая модификация вашего файла environments.rb должна сделать обманывать. Это то, что мне пришлось сделать в моем случае (опубликовать, если кто-нибудь найдет эту страницу в Google):

<code>
SunspotConfig = Sunspot::Rails::Configuration.new
Sunspot.session = Sunspot::IndexQueue::SessionProxy.new(
  Sunspot::IndexQueue.new(
    :session => Sunspot::Session.new{|config| config.solr.url = "http://#{SunspotConfig.hostname}:#{SunspotConfig.port}/solr"}
  )
)
</code>

Чтобы использовать без очереди, прокси-сервер локального потока должен автоматически восстанавливаться из вашего sunspot.yml, поэтому вам не о чем беспокоиться. Вместо этого попробуйте Sunspot::Configuration или Sunspot::Rails::Configuration, если вас интересует что-либо из вашего файла sunspot.yml. (Не забудьте создать экземпляр!)

person atnmachine    schedule 09.02.2012