sunspot_rails没有为其配置读取sunspot.yml

时间:2012-02-07 10:02:11

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

我正在尝试使用带有mongoid的太阳黑子,但太阳黑子没有连接到Solr。尝试连接Solr时Rails报告错误。

Errno::ECONNREFUSED (Connection refused - connect(2))

我使用bundle exec rake sunspot:solr:start来运行Solr并且我已经确认Solr正在开发端口(8982)上运行,如config / sunspot.yml中所定义

当我在Rails控制台中运行Sunspot.config时,我看到了:

   @properties={:url=>"http://127.0.0.1:8983/solr"}

然后我将开发/生产端口更改为8984/8985,Solr从新的dev端口(8984)开始,但Rails控制台中的Sunspot.config仍返回http://127.0.0.1:8983/solr(8984或8985,这意味着它没有根本没读过sunspot.yml)

我是否错过了Rails中Sunspot的一些初始化步骤?

我使用以下版本:

  • ruby​​ 1.9.3
  • rails(3.2.1)
  • 太阳黑子(1.3.0)
  • sunspot_rails(1.3.0)
  • sunspot_mongoid(0.4.1)

3 个答案:

答案 0 :(得分:2)

回答我自己的问题。实际上我的问题原来是sunspot_mongoid,当安装为gem时,它不是rails感知的,我不得不将它作为rails插件添加到thr rails项目中,然后正确加载config / sunspot.yml

答案 1 :(得分:0)

您是否退出控制台,再次启动并检查?

答案 2 :(得分:0)

我在尝试从控制台使用sunspot_index_queue时遇到了类似的问题,结果是太阳黑子没有从sunspot_rails获取所需的配置(从sunspot.yml获取它)对environment.rb文件稍作修改应该做的伎俩。这就是我在我的情况下必须做的事情(如果有人从谷歌找到这个页面发布它):

<code>
SunspotConfig = Sunspot::Rails::Configuration.new
Sunspot.session = Sunspot::IndexQueue::SessionProxy.new(
  Sunspot::IndexQueue.new(
    :session => Sunspot::Session.new{|config| config.solr.url = "http://#{SunspotConfig.hostname}:#{SunspotConfig.port}/solr"}
  )
)
</code>

要在没有队列的情况下使用,本地线程代理应该自动从sunspot.yml恢复,因此您不必担心。如果您对sunspot.yml文件中的任何内容感兴趣,请尝试使用Sunspot::ConfigurationSunspot::Rails::Configuration。 (记得要实例化!)