在可安装的发动机内部,太阳黑子不能读取sunspot.yml

时间:2014-03-27 03:28:07

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

我在可安装引擎内使用太阳黑子宝石。我正在使用现有的Rails 3.2应用程序创建一个引擎,所以我知道我的设置在标准的rails应用程序中有效。

基本上,我不能在开发中使用Sunspot(当使用spec / dummy时 - 我知道它通常用于测试但其他一切工作正常)加载sunspot.yml文件并找到正在运行的版本Solr。

我的gemspec有:

s.add_dependency 'sunspot_rails', '= 2.0.0.pre.120417'
s.add_development_dependency 'sunspot_solr', '~> 1.3.3'
s.add_development_dependency 'sunspot_test', '~> 0.4.0'

我的可安装引擎在spec / dummy处有一个虚拟轨道应用程序用于测试。我的spec / dummy / config / sunspot.yml包含:

development:
  solr:
    port: 8080
    path: /solr
    hostname: localhost

当我使用bundle exec rails console运行rails控制台(来自spec / dummy内部)时,我得到一个普通的rails控制台。

运行Sunspot.config会产生:

> Sunspot.config
=> #<LightConfig::Configuration:0x007f864aeee8a0
 @properties=
  {:solr=>
    #<LightConfig::Configuration:0x007f864aeed0b8
     @properties=
      {:url=>"http://127.0.0.1:8983/solr",
       :read_timeout=>nil,
       :open_timeout=>nil}>,
   :master_solr=>
    #<LightConfig::Configuration:0x007f864aefb398 @properties={:url=>nil}>,
   :pagination=>
    #<LightConfig::Configuration:0x007f864af06ae0
     @properties={:default_per_page=>30}>,
   :indexing=>
    #<LightConfig::Configuration:0x007f864af0bf18
     @properties={:default_batch_size=>50}>}>

显然,太阳黑子没有拿起我的sunspot.yml文件,因为该端口正在8983而不是8080上运行。

通过bundle exec rake sunspot:solr:start(内部spec / dummy)或bundle exec rake app:sunspot:solr:start(来自引擎根)启动Solr服务器在端口8080上正确启动服务器,所以我知道这是在阅读{ {1}}

很少有其他人有类似的问题,但我没有使用sunspot.yml宝石,觉得这与它在引擎内运行的事实有关。

如果有人能帮助我,我将不胜感激!

2 个答案:

答案 0 :(得分:0)

我不能说出这里有什么问题,但我可以告诉你我正在做同样的事情 - 用rails应用程序制作一个引擎 - 而且我有solr 2.0.0- pre-something和现在2.1.0在本地和部署的所有环境中工作。所以,它可以工作。

我想我会通过阅读启动solr所涉及的代码以及如何找到配置来继续前进。

总体而言,并非超级有用 - 但至少现在有一个回复表明你没有注定失败。 :)

答案 1 :(得分:0)

我最终找到了答案。添加s.add_development_dependency 'sunspot_solr', '~> 1.3.3'仅将sunspot_solr添加到开发配置文件中,而不是在开发模式下运行包含gem的应用程序时。这对于正常人来说是有意义的。宝石 - 我只是没想过。

因此,为了将宝石放入包含引擎的应用中,您可以将其设为正常add_dependency或将其包含在应用的Gemfile中。

抱歉浪费你的时间@ian

戴夫