У меня есть то, что кажется (мне) очень странным конфликтом между 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
... и страница "Разработка" не работает.
В настоящее время я не уверен, что с этим делать - и это может быть отвлекающим маневром - но я включаю сюда информацию на тот случай, если она кому-нибудь понравится!
Большое спасибо, Нил.