Class | Delayed::Command |
In: |
lib/delayed/command.rb
|
Parent: | Object |
worker_count | [RW] |
# File lib/delayed/command.rb, line 9 9: def initialize(args) 10: @files_to_reopen = [] 11: @options = {:quiet => true} 12: 13: @worker_count = 1 14: 15: opts = OptionParser.new do |opts| 16: opts.banner = "Usage: #{File.basename($0)} [options] start|stop|restart|run" 17: 18: opts.on('-h', '--help', 'Show this message') do 19: puts opts 20: exit 1 21: end 22: opts.on('-e', '--environment=NAME', 'Specifies the environment to run this delayed jobs under (test/development/production).') do |e| 23: STDERR.puts "The -e/--environment option has been deprecated and has no effect. Use RAILS_ENV and see http://github.com/collectiveidea/delayed_job/issues/#issue/7" 24: end 25: opts.on('--min-priority N', 'Minimum priority of jobs to run.') do |n| 26: @options[:min_priority] = n 27: end 28: opts.on('--max-priority N', 'Maximum priority of jobs to run.') do |n| 29: @options[:max_priority] = n 30: end 31: opts.on('-n', '--number_of_workers=workers', "Number of unique workers to spawn") do |worker_count| 32: @worker_count = worker_count.to_i rescue 1 33: end 34: end 35: @args = opts.parse!(args) 36: end
# File lib/delayed/command.rb, line 38 38: def daemonize 39: ObjectSpace.each_object(File) do |file| 40: @files_to_reopen << file unless file.closed? 41: end 42: 43: worker_count.times do |worker_index| 44: process_name = worker_count == 1 ? "delayed_job" : "delayed_job.#{worker_index}" 45: Daemons.run_proc(process_name, :dir => "#{RAILS_ROOT}/tmp/pids", :dir_mode => :normal, :ARGV => @args) do |*args| 46: run process_name 47: end 48: end 49: end
# File lib/delayed/command.rb, line 51 51: def run(worker_name = nil) 52: Dir.chdir(RAILS_ROOT) 53: 54: # Re-open file handles 55: @files_to_reopen.each do |file| 56: begin 57: file.reopen File.join(RAILS_ROOT, 'log', 'delayed_job.log'), 'w+' 58: file.sync = true 59: rescue ::Exception 60: end 61: end 62: 63: Delayed::Worker.logger = Rails.logger 64: ActiveRecord::Base.connection.reconnect! 65: 66: Delayed::Job.worker_name = "#{worker_name} #{Delayed::Job.worker_name}" 67: 68: Delayed::Worker.new(@options).start 69: rescue => e 70: Rails.logger.fatal e 71: STDERR.puts e.message 72: exit 1 73: end