Sunspot_Rails - 页面上未定义的方法`searchable'

时间:2011-08-11 16:44:31

标签: ruby-on-rails-3 solr sunspot sunspot-rails sunspot-solr

我有一个带searchable块的模型,如下所示:

class Contact < ActiveRecord::Base
  searchable do
    text :contact_name, :company_name, :contact_email
  end  
end

在控制器的index操作中,我正在调用Contact.new,它在页面上给出了一条错误消息,该消息当前正在我们的临时服务器上运行:

  

#&lt; Class:0xce0bf80&gt;

的未定义方法`searchable'

堆栈跟踪通过控制器中的searchable行指向模型中的Contact.new块。

当我在本地运行代码时,无论是在网页上还是在控制台上,还是通过Staging服务器上的控制台,都不会出现此错误 - 仅在Staging网页上显示。

Solr服务在Staging服务器上正常运行,数据已成功编入索引。关于为什么它不在舞台上打球的任何理论都将被接受。

修改

在回答Nick的问题时,Gemfile只有太阳黑子这一行:gem 'sunspot_rails'

对于Gemfile.lock,这些是我能看到的包含Sunspot或Solr引用的所有行:

GEM
  rsolr (0.12.1)
    builder (>= 2.1.2)
  sunspot (1.2.1)  
    escape (= 0.0.4)  
    pr_geohash (~> 1.0)  
    rsolr (= 0.12.1)  
  sunspot_rails (1.2.1)  
    nokogiri  
    sunspot (= 1.2.1)

DEPENDENCIES
  sunspot_rails

5 个答案:

答案 0 :(得分:13)

我遇到了同样的问题,我只需要重启我的rails服务器。简单的解决方案,但如果它不是为某个建议我这样做的其他帖子,我可能会尝试在尝试重新启动服务器之前调试错误更长的时间,呵呵......

答案 1 :(得分:5)

如果您在安装新的太阳黑子宝石后忘记重新启动rails服务器

,也会发生这种情况

答案 2 :(得分:0)

听起来好像宝石未在您的临时站点上正确加载。如果您可以显示Gemfile和Gemfile.lock的相关部分,我可以使用更多答案进行更新。

编辑 - Gemfile看起来很好。对不起,但我没有能够得到我的应用程序。向Sunspot邮件列表报告错误? http://outoftime.github.com/sunspot

答案 3 :(得分:0)

阅读this post后 我明白问题是因为rake任务行阻止了太阳黑子的加载 我设法通过以下方式解决它:

我从我的Rakefile中删除了以下行 需要'太阳黑子/铁轨/任务'

我创建了一个sunspot.rake文件,并从sunspot gem源添加了以下文件的内容: /gems/sunspot_rails-1.2.1/lib/sunspot/rails/tasks.rb

我知道这是一个黑客,但它正在发挥作用。

答案 4 :(得分:0)

我刚运行spring stop并修复了问题