Skip to content

Instantly share code, notes, and snippets.

Created February 11, 2012 02:17
Show Gist options
  • Save doitian/1795439 to your computer and use it in GitHub Desktop.
Save doitian/1795439 to your computer and use it in GitHub Desktop.
sunspot solr in capistrano
namespace :deploy do
task :setup_solr_data_dir do
run "mkdir -p #{shared_path}/solr/data"
namespace :solr do
desc "start solr"
task :start, :roles => :app, :except => { :no_release => true } do
run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec sunspot-solr start --port=8983 --data-directory=#{shared_path}/solr/data --pid-dir=#{shared_path}/pids"
desc "stop solr"
task :stop, :roles => :app, :except => { :no_release => true } do
run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec sunspot-solr stop --port=8983 --data-directory=#{shared_path}/solr/data --pid-dir=#{shared_path}/pids"
desc "reindex the whole database"
task :reindex, :roles => :app do
run "rm -rf #{shared_path}/solr/data"
run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:reindex"
after 'deploy:setup', 'deploy:setup_solr_data_dir'
Copy link

Thanks! Helped me a lot!

Copy link

I spent couple of days trying to set up solr with Capistrano, so that I wouldn't have to reindex the database after every build.
Your recipe helped me achieve my goal. Now the deployment time has been reduced to 8 seconds.
Thank you!

Copy link

coderxin commented Feb 2, 2013

Thanks a lot!

Copy link

May I ask why sunspot-solr start instead of rake sunspot:solr:start?

Copy link

Just wanted to say thanks!

Copy link

This is a god-send. Thank you for this!

Copy link

Great! It works but I have a problem, when I execute cap solr:reindex it throws a message: "Are you sure you want to drop your indexes and completely reindex? (y/n)", but when I enter "yes" or "y" nothing happens and the terminal keeps waiting, how do you manage this situation? (also thinking in Cron for reindex)

Copy link

I'm using "yes" command

yes | bundle exec rake sunspot:solr:reindex"

Copy link

cec commented May 3, 2013

This solution does not work for me, as starting solr in this way does not use the schema.xml file in the app's root, but the one in the sunspot_solr gem dir.

I noticed this as I had a custom analyzer and after moving to this solution, I was not getting expected results anymore.

You can find my solution at

Copy link

mshappe commented May 25, 2013


Copy link

n8gard commented Jul 8, 2013

This is great. One thing I am unclear about: do/can you run more than one instance of Sunspot/Solr? If I have capistrano deploy to multiple servers (in EC2, for example) with :web and :app roles, will each server maintain and provide an index? Or do I define a new role, mapped to only one server that runs Sunspot/Solr?

Copy link

mookie- commented Aug 6, 2013

Hi, thanks for sharing this. I'm also interested how to use Sunspot/Solr with multiple servers. It would be great if someone could answer njnorrgard questions.

Copy link

hminaya commented Aug 14, 2013

thanks, it helped me out.

Copy link

bradens commented Oct 15, 2013

I'm also interested in a multiple server solr setup, anyone know?

Copy link

Thank you!

For anyone who moved to Capistrano 3, I made an updated version:

Copy link

uetchy commented Apr 22, 2014

Thanks a lot!!

Copy link

tamvm commented May 25, 2014

Anyone has same solution for mina ( Thanks

Copy link

any solution for Mina?

Copy link

Thanks, but this solution does not work for me.

I have below version for Sunspot, etc.

sunspot_solr 2.2.7
sunspot 2.2.7
sunspot_rails 2.2.7

For Capistrano 3, I have made an updated version:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment