Я пытаюсь установить Sunspot в небольшое приложение Rails, точно следуя инструкциям по установке gem, но каждый раз Я сталкиваюсь с ошибками RSolr::Error::Http: RSolr::Error::Http - 404 Not Found
при попытке проиндексировать данные. Я могу воспроизвести это с новым приложением; вот точные шаги, которым я следую:
Создайте новое приложение Rails 4.2.5:
$ rails new test_sunspot
$ cd test_sunspot/
$ spring stop # spring can cause `generate` commands to hang
$ rails g model Thing title:string
$ rake db:migrate
$ rails c
> Thing.create!(title: "Cats")
> Thing.create!(title: "Pizza")
> exit
Добавьте в модель индекс солнечных пятен:
class Thing < ActiveRecord::Base
searchable do
text :title
end
end
Добавьте солнечное пятно в Gemfile:
...
gem 'sunspot_rails', '2.2.2'
gem 'sunspot_solr', '2.2.2'
...
Установите, запустите и переиндексируйте Sunspot:
$ bundle install
$ rails g sunspot_rails:install # default sunspot.yml is not changed
$ ps aux | grep solr # confirm that no Solr services are running
$ bundle exec rake sunspot:solr:start # generates solr/ dir; no errors
$ bundle exec rake sunspot:solr:reindex
Эта команда переиндексации дает следующий результат. Когда я захожу в консоль Rails и пытаюсь создать новый объект Thing, возникает та же ошибка (поскольку Sunspot пытается обновить индекс):
Skipping progress bar: for progress reporting, add gem 'progress_bar' to your Gemfile
rake aborted!
RSolr::Error::Http: RSolr::Error::Http - 404 Not Found
Error: Not Found
URI: http://localhost:8982/solr/development/update?wt=ruby
Request Headers: {"Content-Type"=>"text/xml"}
Request Data: "<?xml version=\"1.0\" encoding=\"UTF-8\"?><delete><query>type:Thing</query></delete>"
Backtrace: /Users/topher/.rvm/gems/ruby-2.2.0/gems/rsolr-1.0.13/lib/rsolr/client.rb:284:in `adapt_response'
/Users/topher/.rvm/gems/ruby-2.2.0/gems/rsolr-1.0.13/lib/rsolr/client.rb:190:in `execute'
/Users/topher/.rvm/gems/ruby-2.2.0/gems/rsolr-1.0.13/lib/rsolr/client.rb:176:in `send_and_receive'
# ...lots of backtrace omitted...
/Users/topher/.rvm/gems/ruby-2.2.0/gems/sunspot_rails-2.2.2/lib/sunspot/rails/tasks.rb:19:in `block (2 levels) in <top (required)>'
/Users/topher/.rvm/gems/ruby-2.2.0/bin/ruby_executable_hooks:15:in `eval'
/Users/topher/.rvm/gems/ruby-2.2.0/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => sunspot:solr:reindex => sunspot:reindex
(See full trace by running task with --trace)
Вывод ps aux | grep solr
(после запуска Solr): обратите внимание, что PID, упомянутый в solr/pids/development/sunspot-solr-development.pid
, равен 62449
, что соответствует третьей строке:
topher 62617 0.0 0.0 2432772 520 s002 R+ 3:00PM 0:00.00 grep solr
topher 62484 0.0 1.3 3274624 105756 ?? S 2:57PM 0:03.65 /usr/bin/java -server -Xss256k -Xms512m -Xmx512m -XX:NewRatio=3 -XX:SurvivorRatio=4 -XX:TargetSurvivorRatio=90 -XX:MaxTenuringThreshold=8 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ConcGCThreads=4 -XX:ParallelGCThreads=4 -XX:+CMSScavengeBeforeRemark -XX:PretenureSizeThreshold=64m -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=50 -XX:CMSMaxAbortablePrecleanTime=6000 -XX:+CMSParallelRemarkEnabled -XX:+ParallelRefProcEnabled -verbose:gc -XX:+PrintHeapAtGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/Users/topher/.rvm/gems/ruby-2.2.0/gems/sunspot_solr-2.2.2/solr/server/logs/solr_gc.log -DSTOP.PORT=7982 -DSTOP.KEY=solrrocks -Djetty.port=8982 -Dsolr.solr.home=/Users/topher/Sites/john_kole/test_sunspot/solr -Dsolr.install.dir=/Users/topher/.rvm/gems/ruby-2.2.0/gems/sunspot_solr-2.2.2/solr -Duser.timezone=UTC -Djava.net.preferIPv4Stack=true -jar start.jar
topher 62449 0.0 0.0 2444632 1304 ?? Ss 2:57PM 0:00.04 bash ./solr start -f -p 8982 -s /Users/topher/Sites/john_kole/test_sunspot/solr
Другие детали:
- Я на Mac OSX Yosemite
- Я удалил и переустановил соответствующие драгоценные камни, попытался перейти на Sunspot 1.3.0 и даже запустил
gem pristine --all
без каких-либо изменений в результате. - РЕДАКТИРОВАТЬ: я просмотрел другие подобные тикеты об ошибках Sunspot/Solr 404 Not Found. Похоже, что решения в этих случаях сводились к «сбросу» конфигурации Solr и не относились к новому проекту (среда разработки): предыдущие экземпляры Solr не запускались до запуска rake sunspot:solr:start; это совершенно новый проект Rails, поэтому каталог solr/ в любом случае был только что сгенерирован; это в разработке, а не в производстве; и добавление
solr_home: solr
кsunspot.yml
или обновлениеpath: /solr/default
не влияет на результат 404.
Вопросы:
- Любая идея, почему это происходит?
- Может ли эта поломка быть связана с тем, что что-то неправильно установлено в моей среде OSX? На что мне смотреть?
- Можете ли вы заставить Sunspot правильно работать на свежеустановленной текущей версии Rails, выполнив те же действия?
Заранее спасибо!
ps aux | grep -i spring
не показывает никаких запущенных процессов. - person Topher Hunt   schedule 13.12.2015