namespace :load do task :defaults do set :thinking_sphinx_roles, :db set :thinking_sphinx_rails_env, -> { fetch(:rails_env) || fetch(:stage) } end end namespace :thinking_sphinx do desc <<-DESC Stop, reindex, and then start the Sphinx search daemon. This task must be executed \ if you alter the structure of your indexes. DESC task :rebuild do on roles fetch(:thinking_sphinx_roles) do within current_path do with rails_env: fetch(:thinking_sphinx_rails_env) do execute :rake, "ts:rebuild" end end end end desc 'Stop Sphinx, clear Sphinx index files, generate configuration file, start Sphinx, repopulate all data.' task :regenerate do on roles fetch(:thinking_sphinx_roles) do within current_path do with rails_env: fetch(:thinking_sphinx_rails_env) do execute :rake, 'ts:regenerate' end end end end desc 'Build Sphinx indexes into the shared path.' task :index do on roles fetch(:thinking_sphinx_roles) do within current_path do with rails_env: fetch(:thinking_sphinx_rails_env) do execute :rake, 'ts:index' end end end end desc 'Generate Sphinx indexes into the shared path.' task :generate do on roles fetch(:thinking_sphinx_roles) do within current_path do with rails_env: fetch(:thinking_sphinx_rails_env) do execute :rake, 'ts:generate' end end end end desc 'Restart the Sphinx search daemon.' task :restart do on roles fetch(:thinking_sphinx_roles) do within current_path do with rails_env: fetch(:thinking_sphinx_rails_env) do %w(stop configure start).each do |task| execute :rake, "ts:#{task}" end end end end end desc 'Start the Sphinx search daemon.' task :start do on roles fetch(:thinking_sphinx_roles) do within current_path do with rails_env: fetch(:thinking_sphinx_rails_env) do execute :rake, 'ts:start' end end end end before :start, 'thinking_sphinx:configure' desc 'Generate the Sphinx configuration file.' task :configure do on roles fetch(:thinking_sphinx_roles) do within current_path do with rails_env: fetch(:thinking_sphinx_rails_env) do execute :rake, 'ts:configure' end end end end desc 'Stop the Sphinx search daemon.' task :stop do on roles fetch(:thinking_sphinx_roles) do within current_path do with rails_env: fetch(:thinking_sphinx_rails_env) do execute :rake, 'ts:stop' end end end end end