| 
									
										
										
										
											2013-06-19 08:11:16 +00:00
										 |  |  | rails_env   = ENV['RAILS_ENV']  || "production" | 
					
						
							|  |  |  | rails_root  = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/..' | 
					
						
							|  |  |  | user_home = ENV['HOME'] || File.dirname(__FILE__) + '/../..' | 
					
						
							|  |  |  | development_uid = '' | 
					
						
							|  |  |  | development_gid = '' | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   God.watch do |w| | 
					
						
							|  |  |  |     w.dir        = rails_root | 
					
						
							| 
									
										
										
										
											2013-06-19 08:24:56 +00:00
										 |  |  |     w.name    = "sunspot-solr" | 
					
						
							| 
									
										
										
										
											2013-06-19 08:11:16 +00:00
										 |  |  |     w.group   = 'rulingcom' | 
					
						
							|  |  |  |     w.interval = 30.seconds | 
					
						
							|  |  |  |     w.env       = {"RAILS_ENV"=>rails_env} | 
					
						
							| 
									
										
										
										
											2013-06-19 11:23:45 +00:00
										 |  |  |     w.start     = "HOME=#{user_home} QUEUE=* RAILS_ENV=#{rails_env} rake -f #{rails_root}/Rakefile sunspot:solr:start" | 
					
						
							|  |  |  |     w.keepalive | 
					
						
							| 
									
										
										
										
											2013-06-19 08:11:16 +00:00
										 |  |  |     w.uid = (rails_env == 'production' )? "root" : development_uid | 
					
						
							|  |  |  |     w.gid = (rails_env == 'production' )? "root" : development_gid | 
					
						
							| 
									
										
										
										
											2013-06-19 11:23:45 +00:00
										 |  |  |     w.pid_file = "#{rails_root}/solr/pids/production/sunspot-solr-production.pid" | 
					
						
							|  |  |  |     w.log = (rails_env == 'production' )? "/var/log/#{w.group}/#{w.name}.log":"#{rails_root}/log/dev-#{w.name}.log" | 
					
						
							| 
									
										
										
										
											2013-06-19 08:11:16 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # restart if memory gets too high | 
					
						
							|  |  |  |     w.transition(:up, :restart) do |on| | 
					
						
							|  |  |  |       on.condition(:memory_usage) do |c| | 
					
						
							|  |  |  |         c.above = 350.megabytes | 
					
						
							|  |  |  |         c.times = 2 | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # determine the state on startup | 
					
						
							|  |  |  |     w.transition(:init, { true => :up, false => :start }) do |on| | 
					
						
							|  |  |  |       on.condition(:process_running) do |c| | 
					
						
							|  |  |  |         c.running = true | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # determine when process has finished starting | 
					
						
							|  |  |  |     w.transition([:start, :restart], :up) do |on| | 
					
						
							|  |  |  |       on.condition(:process_running) do |c| | 
					
						
							|  |  |  |         c.running = true | 
					
						
							|  |  |  |         c.interval = 5.seconds | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # failsafe | 
					
						
							|  |  |  |       on.condition(:tries) do |c| | 
					
						
							|  |  |  |         c.times = 5 | 
					
						
							|  |  |  |         c.transition = :start | 
					
						
							|  |  |  |         c.interval = 5.seconds | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # start if process is not running | 
					
						
							|  |  |  |     w.transition(:up, :start) do |on| | 
					
						
							|  |  |  |       on.condition(:process_running) do |c| | 
					
						
							|  |  |  |         c.running = false | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 |