Module: PumaWorkerKiller

Extended by:
PumaWorkerKiller
Included in:
PumaWorkerKiller
Defined in:
lib/puma_worker_killer.rb,
lib/puma_worker_killer/reaper.rb,
lib/puma_worker_killer/version.rb,
lib/puma_worker_killer/auto_reap.rb,
lib/puma_worker_killer/puma_memory.rb,
lib/puma_worker_killer/rolling_restart.rb

Defined Under Namespace

Classes: AutoReap, PumaMemory, Reaper, RollingRestart

Constant Summary collapse

VERSION =
'0.2.0'

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#frequencyObject

Returns the value of attribute frequency.



8
9
10
# File 'lib/puma_worker_killer.rb', line 8

def frequency
  @frequency
end

#on_calculationObject

Returns the value of attribute on_calculation.



8
9
10
# File 'lib/puma_worker_killer.rb', line 8

def on_calculation
  @on_calculation
end

#percent_usageObject

Returns the value of attribute percent_usage.



8
9
10
# File 'lib/puma_worker_killer.rb', line 8

def percent_usage
  @percent_usage
end

#pre_termObject

Returns the value of attribute pre_term.



8
9
10
# File 'lib/puma_worker_killer.rb', line 8

def pre_term
  @pre_term
end

#ramObject

Returns the value of attribute ram.



8
9
10
# File 'lib/puma_worker_killer.rb', line 8

def ram
  @ram
end

#reaper_status_logsObject

Returns the value of attribute reaper_status_logs.



8
9
10
# File 'lib/puma_worker_killer.rb', line 8

def reaper_status_logs
  @reaper_status_logs
end

#rolling_pre_termObject

Returns the value of attribute rolling_pre_term.



8
9
10
# File 'lib/puma_worker_killer.rb', line 8

def rolling_pre_term
  @rolling_pre_term
end

#rolling_restart_frequencyObject

Returns the value of attribute rolling_restart_frequency.



8
9
10
# File 'lib/puma_worker_killer.rb', line 8

def rolling_restart_frequency
  @rolling_restart_frequency
end

Instance Method Details

#config {|_self| ... } ⇒ Object

Yields:

  • (_self)

Yield Parameters:



20
21
22
# File 'lib/puma_worker_killer.rb', line 20

def config
  yield self
end

#enable_rolling_restart(frequency = rolling_restart_frequency) ⇒ Object



33
34
35
36
# File 'lib/puma_worker_killer.rb', line 33

def enable_rolling_restart(frequency = rolling_restart_frequency)
  frequency += rand(0..10.0) # so all workers don't restart at the exact same time across multiple machines
  AutoReap.new(frequency, RollingRestart.new(nil, rolling_pre_term)).start
end

#reaper(ram = self.ram, percent_usage = self.percent_usage, reaper_status_logs = self.reaper_status_logs, pre_term = self.pre_term, on_calculation = self.on_calculation) ⇒ Object



24
25
26
# File 'lib/puma_worker_killer.rb', line 24

def reaper(ram = self.ram, percent_usage = self.percent_usage, reaper_status_logs = self.reaper_status_logs, pre_term = self.pre_term, on_calculation = self.on_calculation)
  Reaper.new(ram * percent_usage, nil, reaper_status_logs, pre_term, on_calculation)
end

#start(frequency = self.frequency, reaper = self.reaper) ⇒ Object



28
29
30
31
# File 'lib/puma_worker_killer.rb', line 28

def start(frequency = self.frequency, reaper = self.reaper)
  AutoReap.new(frequency, reaper).start
  enable_rolling_restart(rolling_restart_frequency) if rolling_restart_frequency
end