-
-
Save doitian/1795439 to your computer and use it in GitHub Desktop.
namespace :deploy do | |
task :setup_solr_data_dir do | |
run "mkdir -p #{shared_path}/solr/data" | |
end | |
end | |
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" | |
end | |
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" | |
end | |
desc "reindex the whole database" | |
task :reindex, :roles => :app do | |
stop | |
run "rm -rf #{shared_path}/solr/data" | |
start | |
run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:reindex" | |
end | |
end | |
after 'deploy:setup', 'deploy:setup_solr_data_dir' |
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!
Thanks a lot!
May I ask why sunspot-solr start
instead of rake sunspot:solr:start
?
Just wanted to say thanks!
This is a god-send. Thank you for this!
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)
I'm using "yes" command
yes | bundle exec rake sunspot:solr:reindex"
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 https://gist.github.com/cec/5508303
👍
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?
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.
thanks, it helped me out.
I'm also interested in a multiple server solr setup, anyone know?
Thank you!
For anyone who moved to Capistrano 3, I made an updated version: https://gist.github.com/muscardinus/8884801
Thanks a lot!!
Anyone has same solution for mina (http://nadarei.co/mina/)? Thanks
any solution for Mina?
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: https://gist.github.com/lalitlogical/4c8c047b95fe45da6ae19d1b59411783
Thanks! Helped me a lot!