在Rails 2.3.10应用程序中,我对Thinking Sphinx(1.4.3)和Devise(1.0.10)之间的一个非常奇怪的冲突似乎(对我而言)。 (两个gem都在我的environment.rb文件中配置)
单独地说,一切都按预期工作 - Devise适用于注册和登录等.Shink Sphinx愉快地返回搜索结果。
但是,在生产模式下(或者在开发模式下使用cache_classes = true),同时运行两者都会使我的所有设计路径显然消失。
在我的路线文件中,我有一个非常简单的“map.devise_for:customers”,因此我可以访问“/ customers / sign_up”。此时,我安装了Thinking Sphinx gem,但没有定义索引。
现在,只要我转到我的产品模型,并添加一个非常简单的索引设置,例如:
define_index do
indexes name
end
然后是404s页面,其中包含:
ActionController::RoutingError (No route matches "/customers/sign_up" with {:method=>:get})
如果我删除了define_index块,一切正常。正如我所说,一切也可以正常工作,cache_classes设置为false。
这是一个中等复杂的项目,所以其他东西可能导致以这种方式表现出来的问题,但如果有人有任何建议或建议如何解决这个问题,我将非常感激。
[编辑]
我一直在进一步调查,并发现TS似乎导致我的客户模型在生产中加载两次。
因此,如果没有Products中的define_index块,我会看到:
...而且设计页面有效。将define_index块添加到产品中,我看到:
...而且设计页面不起作用。
我目前还不确定该怎么做 - 而且它可能是一个红色的鲱鱼 - 但我在这里包含了这些信息,以防它与任何人敲响任何铃声!
非常感谢,尼尔。
答案 0 :(得分:2)
在我的config / sphinx.yml文件中,如果我通知Thinking Sphinx要索引的特定模型,那么:
development:
indexed_models:
- Product
- AnyOtherIndexedModels
然后一切都按预期运行,我的Devise路线也起作用。我正在将此信息添加到SO,以防它可以帮助处于类似情况的未来灵魂。 Google网上论坛主题就在这里:
http://groups.google.com/group/thinking-sphinx/browse_thread/thread/b178e52bbabdf9bf