class Delayed::Master::Forker
Public Class Methods
new(master)
click to toggle source
# File lib/delayed/master/forker.rb, line 4 def initialize(master) @master = master @config = master.config end
Public Instance Methods
new_worker(worker)
click to toggle source
# File lib/delayed/master/forker.rb, line 9 def new_worker(worker) @master.logger.info "forking #{worker.name}..." fork_worker(worker) @master.logger.info "forked #{worker.name} with pid #{worker.pid}" @master.workers << worker end
Private Instance Methods
create_instance(worker)
click to toggle source
# File lib/delayed/master/forker.rb, line 30 def create_instance(worker) require_relative 'worker_extension' instance = Delayed::Worker.new(worker.setting.data) [:max_run_time, :max_attempts, :destroy_failed_jobs].each do |key| if (value = worker.setting.send(key)) Delayed::Worker.send("#{key}=", value) end end [:max_memory].each do |key| if (value = worker.setting.send(key)) instance.send("#{key}=", value) end end instance.master_logger = @master.logger instance end
fork_worker(worker)
click to toggle source
# File lib/delayed/master/forker.rb, line 19 def fork_worker(worker) @config.run_callback(:before_fork, @master, worker) worker.pid = fork do worker.pid = Process.pid worker.instance = create_instance(worker) @config.run_callback(:after_fork, @master, worker) $0 = worker.process_title worker.instance.start end end