| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- namespace :sphinx do
- desc 'Run indexer for configured indexes'
- task :index do
- config = load_config
- if config[:indexes]
- system "#{config[:root_dir]}/indexer --config \"#{config[:config_file]}\" #{config[:indexes]}"
- else
- puts 'You should specify indexes in sphinx.yml'
- end
- end
- desc 'Run indexer for all indexes'
- task :index_all do
- config = load_config
- system "#{config[:root_dir]}/indexer --config \"#{config[:config_file]}\" --all"
- end
- desc 'Rotate configured indexes and restart searchd server'
- task :rotate do
- config = load_config
- if config[:indexes]
- system "#{config[:root_dir]}/indexer --config \"#{config[:config_file]}\" --rotate #{config[:indexes]}"
- else
- puts 'You should specify indexes in sphinx.yml'
- end
- end
- desc 'Rotate all indexes and restart searchd server'
- task :rotate_all do
- config = load_config
- system "#{config[:root_dir]}/indexer --config \"#{config[:config_file]}\" --rotate --all"
- end
-
- desc 'Start searchd server'
- task :start do
- config = load_config
- if File.exists?(config[:pid_file])
- puts 'Sphinx searchd server is already started.'
- else
- system "#{config[:root_dir]}/searchd --config \"#{config[:config_file]}\""
- puts 'Sphinx searchd server started.'
- end
- end
-
- desc 'Stop searchd server'
- task :stop do
- config = load_config
- unless File.exists?(config[:pid_file])
- puts 'Sphinx searchd server is not running.'
- else
- pid = File.read(config[:pid_file]).chomp
- kill 'SIGHUP', pid
- puts 'Sphinx searchd server stopped.'
- end
- end
-
- desc 'Restart searchd server'
- task :restart => [:stop, :start]
-
- def load_config
- return @sphinx_config if @sphinx_config
- options = YAML.load_file(File.dirname(__FILE__) + '/../../../../config/sphinx.yml') rescue {}
- @sphinx_config = {
- :config_file => options['config_file'] || '/etc/sphinx.conf',
- :root_dir => options['root_dir'] || '/usr/bin',
- :indexes => options['indexes']
- }
- sphinx_config = File.read(@sphinx_config[:config_file]) rescue ''
-
- sphinx_config =~ /searchd\s*{.*pid_file\s*=\s*(.*?)\n.*}/m
- @sphinx_config[:pid_file] = $1 || '/var/run/searchd.pid'
- return @sphinx_config
- end
- end
|