diff options
| author | hukl <contact@smyck.org> | 2009-04-28 00:15:53 +0200 |
|---|---|---|
| committer | hukl <contact@smyck.org> | 2009-05-01 17:14:02 +0200 |
| commit | 4bd16f053847f2efe347ebda9136ef2233ee0d2c (patch) | |
| tree | f4c11f89455de991c8d87726d5757b752e7129e2 /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/tasks.rb | |
| parent | d3a9b46ba5c863a0ff377dcffae9a494fe476e02 (diff) | |
added thinking_sphinx plugin for fulltext search on nodes and heads
Diffstat (limited to 'vendor/plugins/thinking-sphinx/lib/thinking_sphinx/tasks.rb')
| -rw-r--r-- | vendor/plugins/thinking-sphinx/lib/thinking_sphinx/tasks.rb | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/tasks.rb b/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/tasks.rb new file mode 100644 index 0000000..ab8990e --- /dev/null +++ b/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/tasks.rb | |||
| @@ -0,0 +1,128 @@ | |||
| 1 | require 'fileutils' | ||
| 2 | |||
| 3 | namespace :thinking_sphinx do | ||
| 4 | task :app_env do | ||
| 5 | Rake::Task[:environment].invoke if defined?(RAILS_ROOT) | ||
| 6 | Rake::Task[:merb_env].invoke if defined?(Merb) | ||
| 7 | end | ||
| 8 | |||
| 9 | desc "Stop if running, then start a Sphinx searchd daemon using Thinking Sphinx's settings" | ||
| 10 | task :running_start => :app_env do | ||
| 11 | Rake::Task["thinking_sphinx:stop"].invoke if sphinx_running? | ||
| 12 | Rake::Task["thinking_sphinx:start"].invoke | ||
| 13 | end | ||
| 14 | |||
| 15 | desc "Start a Sphinx searchd daemon using Thinking Sphinx's settings" | ||
| 16 | task :start => :app_env do | ||
| 17 | config = ThinkingSphinx::Configuration.instance | ||
| 18 | |||
| 19 | FileUtils.mkdir_p config.searchd_file_path | ||
| 20 | raise RuntimeError, "searchd is already running." if sphinx_running? | ||
| 21 | |||
| 22 | Dir["#{config.searchd_file_path}/*.spl"].each { |file| File.delete(file) } | ||
| 23 | |||
| 24 | cmd = "#{config.bin_path}searchd --pidfile --config #{config.config_file}" | ||
| 25 | puts cmd | ||
| 26 | system cmd | ||
| 27 | |||
| 28 | sleep(2) | ||
| 29 | |||
| 30 | if sphinx_running? | ||
| 31 | puts "Started successfully (pid #{sphinx_pid})." | ||
| 32 | else | ||
| 33 | puts "Failed to start searchd daemon. Check #{config.searchd_log_file}." | ||
| 34 | end | ||
| 35 | end | ||
| 36 | |||
| 37 | desc "Stop Sphinx using Thinking Sphinx's settings" | ||
| 38 | task :stop => :app_env do | ||
| 39 | raise RuntimeError, "searchd is not running." unless sphinx_running? | ||
| 40 | config = ThinkingSphinx::Configuration.instance | ||
| 41 | pid = sphinx_pid | ||
| 42 | system "#{config.bin_path}searchd --stop --config #{config.config_file}" | ||
| 43 | puts "Stopped search daemon (pid #{pid})." | ||
| 44 | end | ||
| 45 | |||
| 46 | desc "Restart Sphinx" | ||
| 47 | task :restart => [:app_env, :stop, :start] | ||
| 48 | |||
| 49 | desc "Generate the Sphinx configuration file using Thinking Sphinx's settings" | ||
| 50 | task :configure => :app_env do | ||
| 51 | config = ThinkingSphinx::Configuration.instance | ||
| 52 | puts "Generating Configuration to #{config.config_file}" | ||
| 53 | config.build | ||
| 54 | end | ||
| 55 | |||
| 56 | desc "Index data for Sphinx using Thinking Sphinx's settings" | ||
| 57 | task :index => :app_env do | ||
| 58 | ThinkingSphinx::Deltas::Job.cancel_thinking_sphinx_jobs | ||
| 59 | |||
| 60 | config = ThinkingSphinx::Configuration.instance | ||
| 61 | unless ENV["INDEX_ONLY"] == "true" | ||
| 62 | puts "Generating Configuration to #{config.config_file}" | ||
| 63 | config.build | ||
| 64 | end | ||
| 65 | |||
| 66 | FileUtils.mkdir_p config.searchd_file_path | ||
| 67 | cmd = "#{config.bin_path}indexer --config #{config.config_file} --all" | ||
| 68 | cmd << " --rotate" if sphinx_running? | ||
| 69 | puts cmd | ||
| 70 | system cmd | ||
| 71 | end | ||
| 72 | |||
| 73 | namespace :index do | ||
| 74 | task :delta => :app_env do | ||
| 75 | ThinkingSphinx.indexed_models.select { |model| | ||
| 76 | model.constantize.sphinx_indexes.any? { |index| index.delta? } | ||
| 77 | }.each do |model| | ||
| 78 | model.constantize.sphinx_indexes.select { |index| | ||
| 79 | index.delta? && index.delta_object.respond_to?(:delayed_index) | ||
| 80 | }.each { |index| | ||
| 81 | index.delta_object.delayed_index(index.model) | ||
| 82 | } | ||
| 83 | end | ||
| 84 | end | ||
| 85 | end | ||
| 86 | |||
| 87 | desc "Process stored delta index requests" | ||
| 88 | task :delayed_delta => :app_env do | ||
| 89 | require 'delayed/worker' | ||
| 90 | |||
| 91 | Delayed::Worker.new( | ||
| 92 | :min_priority => ENV['MIN_PRIORITY'], | ||
| 93 | :max_priority => ENV['MAX_PRIORITY'] | ||
| 94 | ).start | ||
| 95 | end | ||
| 96 | end | ||
| 97 | |||
| 98 | namespace :ts do | ||
| 99 | desc "Stop if running, then start a Sphinx searchd daemon using Thinking Sphinx's settings" | ||
| 100 | task :run => "thinking_sphinx:running_start" | ||
| 101 | desc "Start a Sphinx searchd daemon using Thinking Sphinx's settings" | ||
| 102 | task :start => "thinking_sphinx:start" | ||
| 103 | desc "Stop Sphinx using Thinking Sphinx's settings" | ||
| 104 | task :stop => "thinking_sphinx:stop" | ||
| 105 | desc "Index data for Sphinx using Thinking Sphinx's settings" | ||
| 106 | task :in => "thinking_sphinx:index" | ||
| 107 | namespace :in do | ||
| 108 | desc "Index Thinking Sphinx datetime delta indexes" | ||
| 109 | task :delta => "thinking_sphinx:index:delta" | ||
| 110 | end | ||
| 111 | task :index => "thinking_sphinx:index" | ||
| 112 | desc "Restart Sphinx" | ||
| 113 | task :restart => "thinking_sphinx:restart" | ||
| 114 | desc "Generate the Sphinx configuration file using Thinking Sphinx's settings" | ||
| 115 | task :conf => "thinking_sphinx:configure" | ||
| 116 | desc "Generate the Sphinx configuration file using Thinking Sphinx's settings" | ||
| 117 | task :config => "thinking_sphinx:configure" | ||
| 118 | desc "Process stored delta index requests" | ||
| 119 | task :dd => "thinking_sphinx:delayed_delta" | ||
| 120 | end | ||
| 121 | |||
| 122 | def sphinx_pid | ||
| 123 | ThinkingSphinx.sphinx_pid | ||
| 124 | end | ||
| 125 | |||
| 126 | def sphinx_running? | ||
| 127 | ThinkingSphinx.sphinx_running? | ||
| 128 | end | ||
