Ракетаски Sunspot/Solr не загружаются в Rails 3 Mountable Engine

Я пытаюсь добавить гем sunspot_rails в свой Подключаемый движок Rails, поэтому я могу использовать Solr для полнотекстового поиска. Как указано в файле README, я добавил это в свой Gemfile:

gem "sunspot_rails"
gem "sunspot_solr"

Затем я запускаю rails g sunspot_rails:install, который создает sunspot.yml в папке config моего Rails Engine. Чтобы запустить sunspot, мне нужно запустить:

bundle exec rake sunspot:solr:start

Но это не работает и выдает следующее сообщение об ошибке:

rake aborted!
Don't know how to build task 'sunspot:solr:start'

Кажется, что он не загружает рейк-задачи Sunspot/Solr и поэтому не может их найти. У меня были и другие проблемы с тем, что движок Rails не загружал файлы, которые автоматически загружались бы в обычном приложении Rails 3. Я подозреваю, что что-то в этом направлении происходит и здесь. Я проверил папку lib/tasks, там только один файл: my_app.rake. В этом файле всего несколько закомментированных строк кода:

# desc "Explaining what the task does"
# task :my_app do
#   # Task goes here
# end

Я думаю, что мне, возможно, потребуется добавить raketasks вручную и загрузить их из my_app.rake. Однако я не могу найти никакой информации о том, как это сделать, и, возможно, я совершенно неправ. Надеюсь, у кого-то из stackoverflow есть опыт в этом.

В любом случае заранее большое спасибо за любую помощь!


person Stefan Hagen    schedule 11.05.2013    source источник


Ответы (1)


Несколько дней назад я сам нашел решение этой проблемы, поэтому для полноты картины и (надеюсь) чтобы помочь другим, я опубликую свое решение здесь.

На самом деле проблема возникает из-за того, что монтируемый движок Rails 3 ведет себя почти как обычное приложение Rails, но также имеет много мелких/больших отличий. Вам просто нужно запустить bundle exec rake app:sunspot:solr:start вместо bundle exec rake sunspot:solr:start.

Итак, чтобы заставить Sunspot работать в монтируемом движке Rails 3, я выполнил следующие шаги:

Добавить в Gemfile

# Gemfile (Don't forget to move them to your gemspec when packaging your engine)

gem 'sunspot_solr' #only for development mode
gen 'sunspot_rails'

После этого не забудьте запустить bundle install для установки гемов.

Настройте свой движок для использования Sunspot/Solr

Чтобы сгенерировать необходимый config/sunspot.yml файл, запустите:

rails generate sunspot_rails:install

Запустите Solr на локальном компьютере

Наконец, чтобы запустить локальный экземпляр Solr, запустите:

bundle exec rake app:sunspot:solr:start

И теперь все готово!

person Stefan Hagen    schedule 20.06.2013