我在可安装引擎内使用太阳黑子宝石。我正在使用现有的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
宝石,觉得这与它在引擎内运行的事实有关。
如果有人能帮助我,我将不胜感激!
答案 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
戴夫