思考Sphinx和Devise路线在生产模式下不能一起工作?

时间:2011-02-25 10:29:09

标签: ruby-on-rails devise thinking-sphinx

在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块,我会看到:

  • 正在加载product.rb
  • 正在加载customer.rb

...而且设计页面有效。将define_index块添加到产品中,我看到:

  • 正在加载product.rb
  • 正在加载customer.rb
  • 正在加载customer.rb

...而且设计页面不起作用。

我目前还不确定该怎么做 - 而且它可能是一个红色的鲱鱼 - 但我在这里包含了这些信息,以防它与任何人敲响任何铃声!

非常感谢,尼尔。

1 个答案:

答案 0 :(得分:2)

Pat Allen回答 - 或者给出了一个有效的解决方案 - 思考斯芬克斯谷歌集团的这个问题:

在我的config / sphinx.yml文件中,如果我通知Thinking Sphinx要索引的特定模型,那么:

development: 
  indexed_models: 
    - Product 
    - AnyOtherIndexedModels

然后一切都按预期运行,我的Devise路线也起作用。我正在将此信息添加到SO,以防它可以帮助处于类似情况的未来灵魂。 Google网上论坛主题就在这里:

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