问题
I'm trying to add the sunspot_rails gem to my Rails Mountable Engine, so I can use Solr to do full text searches. Like it states in the README file I've added this to my Gemfile:
gem "sunspot_rails"
gem "sunspot_solr"
Then I run rails g sunspot_rails:install
which creates sunspot.yml
in the config
folder of my Rails Engine. To start sunspot I need to run:
bundle exec rake sunspot:solr:start
But that doesn't work, and gives me the following error message:
rake aborted!
Don't know how to build task 'sunspot:solr:start'
It seems that it doesn't load the Sunspot/Solr rake tasks, and so it can't find them. I've had other issues with the Rails engine not loading files that would load automatically in a normal Rails 3 application. I suspect something along that line is going on here as well. I checked the lib/tasks
folder, and there is only one file in there: my_app.rake
. In that file there are only a few commented lines of code:
# desc "Explaining what the task does"
# task :my_app do
# # Task goes here
# end
I think I would maybe need to add the raketasks manually, and load them from my_app.rake
. However, I can't find any information on how to do this, and I maybe I'm completely wrong in the first place. Hopefully someone on stackoverflow has experience with this.
In any case, thank you very much for any help in advance!
回答1:
A few days ago found a solution to this problem myself, so for the sake of completeness and (hopefully) to be of help to others, I will post my solution here.
The problem actually occurs because a Rails 3 Mountable Engine behaves a lot LIKE a normal Rails app, but also has a lot of minor/major differences. You just have to run bundle exec rake app:sunspot:solr:start
instead of just bundle exec rake sunspot:solr:start
.
So to get Sunspot working in a Rails 3 Mountable Engine, I followed these steps:
Add to 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'
After that, don't forget to run bundle install
to install the gems.
Configure your engine to use Sunspot/Solr
To generate the needed config/sunspot.yml
file run:
rails generate sunspot_rails:install
Start Solr on your local machine
Finally, to start a local instance of Solr run:
bundle exec rake app:sunspot:solr:start
And now you are all set!
来源:https://stackoverflow.com/questions/16502355/sunspot-solr-raketasks-not-loading-in-rails-3-mountable-engine