太阳黑子/ Solr raketasks未装入Rails 3可安装引擎

时间:2013-05-11 22:35:00

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

我正在尝试将sunspot_rails gem添加到我的Rails Mountable Engine,因此我可以使用Solr进行全文搜索。就像它在README文件中说的那样,我已将它添加到我的Gemfile中:

gem "sunspot_rails"
gem "sunspot_solr"

然后我运行rails g sunspot_rails:install,在我的Rails引擎的sunspot.yml文件夹中创建config。要开始太阳黑子,我需要运行:

bundle exec rake sunspot:solr:start

但这不起作用,并给我以下错误消息:

rake aborted!
Don't know how to build task 'sunspot:solr:start'

它似乎没有加载Sunspot / Solr rake任务,因此无法找到它们。我还有其他问题,Rails引擎没有加载会在普通的Rails 3应用程序中自动加载的文件。我怀疑这条线上的东西也在这里。我检查了lib/tasks文件夹,其中只有一个文件:my_app.rake。在该文件中,只有少数注释代码行:

# desc "Explaining what the task does"
# task :my_app do
#   # Task goes here
# end

我想我可能需要手动添加raketasks,并从my_app.rake加载它们。但是,我找不到任何关于如何做到这一点的信息,而且我可能在一开始就完全错了。希望stackoverflow上有人有这方面的经验。

无论如何,非常感谢您提前提供任何帮助!

1 个答案:

答案 0 :(得分:2)

前几天我自己找到了解决这个问题的方法,所以为了完整性和(希望)能帮助别人,我会在这里发布我的解决方案。

问题实际上是因为Rails 3可安装引擎表现得很像普通的Rails应用程序,但也有很多次要/主要差异。您只需运行bundle exec rake app:sunspot:solr:start而不只是bundle exec rake sunspot:solr:start

为了让Sunspot在Rails 3可安装引擎中工作,我按照以下步骤操作:

添加到Gemfile

# Gemfile (Don't forget to move them to your gemspec when packaging your engine)

gem 'sunspot_solr' #only for development mode
gen 'sunspot_rails'

之后,不要忘记运行bundle install来安装宝石。

将引擎配置为使用Sunspot / Solr

生成所需的config/sunspot.yml文件运行:

rails generate sunspot_rails:install

在本地计算机上启动Solr

最后,要启动Solr run的本地实例:

bundle exec rake app:sunspot:solr:start

现在你已经准备就绪了!