1

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

gem "sunspot_rails"
gem "sunspot_solr"

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

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上的人有这方面的经验。

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

4

1 回答 1

2

几天前自己找到了解决此问题的方法,因此为了完整起见并(希望)对其他人有所帮助,我将在此处发布我的解决方案。

这个问题实际上是因为 Rails 3 Mountable Engine 的行为很像普通的 Rails 应用程序,但也有很多次要/主要差异。你只需要运行bundle exec rake app:sunspot:solr:start而不是bundle exec rake sunspot:solr:start.

所以为了让 Sunspot 在 Rails 3 Mountable Engine 中工作,我按照以下步骤操作:

添加到 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以安装 gems。

配置您的引擎以使用 Sunspot/Solr

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

rails generate sunspot_rails:install

在本地机器上启动 Solr

最后,要启动 Solr 的本地实例,请运行:

bundle exec rake app:sunspot:solr:start

现在你们都准备好了!

于 2013-06-20T17:14:07.017 回答