Думаете, маршруты Sphinx и Devise не работают вместе в производственном режиме? - PullRequest
1 голос
/ 25 февраля 2011

У меня, как мне кажется, очень странный конфликт между 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, но индексы не определены.

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

define_index do
  indexes name
end

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

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

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

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

[EDIT]

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

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

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

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

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

... и страница Devise не работает.

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

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

1 Ответ

2 голосов
/ 28 февраля 2011

Пэт Аллен ответил - или дал рабочее исправление - на этот вопрос в группе 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

...