Думаете, маршруты Sphinx и Devise не работают вместе в производственном режиме?

У меня есть то, что кажется (мне) очень странным конфликтом между Thinking Sphinx (1.4.3) и Devise (1.0.10) в приложении Rails 2.3.10. (Оба гема настроены в моем файле environment.rb)

По отдельности все работает, как ожидалось - Devise отлично работает для регистрации и входа в систему и т. Д., Thinking Sphinx успешно возвращает результаты поиска.

Однако в производственном режиме (или с cache_classes = true в режиме разработки) при совместном выполнении всех моих маршрутов разработки, по-видимому, исчезают.

В моем файле маршрутов есть очень простой "map.devise_for: customers", и поэтому я могу получить доступ к "/ customers / sign_up". На данный момент у меня установлен гем Thinking Sphinx, но индексы не определены.

Теперь, как только я перехожу к своей модели продукта и добавляю очень простую настройку индекса, например:

define_index do
  indexes name
end

затем страница 404 с:

ActionController::RoutingError (No route matches "/customers/sign_up" with {:method=>:get})

Если я затем удалю блок define_index, все будет работать нормально. Как я уже сказал, все также отлично работает с параметром cache_classes, установленным в false.

Это умеренно сложный проект, поэтому возможно, что что-то еще вызывает проблему, которая проявляется таким образом, но если у кого-то есть какие-либо предложения или советы относительно того, как решить эту проблему, я был бы очень признателен.

[РЕДАКТИРОВАТЬ]

Я продолжил расследование и обнаружил, что TS, похоже, заставляет мою модель клиента дважды загружаться в производственной среде.

Итак, без блока define_index в продуктах я вижу:

  • Загрузка product.rb
  • Загрузка customer.rb

... и страница Devise работает. Добавляя блок define_index в продукты, я вижу:

  • Загрузка product.rb
  • Загрузка customer.rb
  • Загрузка customer.rb

... и страница "Разработка" не работает.

В настоящее время я не уверен, что с этим делать - и это может быть отвлекающим маневром - но я включаю сюда информацию на тот случай, если она кому-нибудь понравится!

Большое спасибо, Нил.


person NeilS    schedule 25.02.2011    source источник


Ответы (1)


Пэт Аллен ответил - или дал исправление - на этот вопрос в группе Google Thinking Sphinx:

В моем файле config / sphinx.yml, если я сообщу Thinking Sphinx о конкретных моделях, которые нужно проиндексировать, таким образом:

development: 
  indexed_models: 
    - Product 
    - AnyOtherIndexedModels

Затем все работает, как ожидалось, и мои маршруты Devise работают. Я добавляю эту информацию в SO на случай, если она поможет любой будущей душе в подобной ситуации. Тема групп Google находится здесь:

http://groups.google.com/group/thinking-sphinx/browse_thread/thread/b178e52bbabdf9bf

person NeilS    schedule 28.02.2011
comment
Я столкнулся с той же проблемой, но она подняла голову по-другому, поэтому мне потребовалось время, чтобы найти это решение. Так или иначе, я опубликовал проблему с Devise. Может быть, что-то можно сделать, чтобы эти два проекта лучше работали вместе. - person aNoble; 25.06.2011