class Uc::Unicorn::Api

Attributes

original_env[R]
queue_name[RW]
run_id[R]

Public Class Methods

new(event_queue) click to toggle source
# File lib/uc/unicorn/api.rb, line 17
def initialize(event_queue)
  @queue_name = event_queue
  @run_id = SecureRandom.hex(3)
  ::Uc::Logger.event_queue = queue_name
end

Public Instance Methods

acquire_shared_lock(lock_file) click to toggle source
# File lib/uc/unicorn/api.rb, line 50
def acquire_shared_lock(lock_file)
  shared_lock = ::Uc::Unicorn::Lock.new(lock_file)
  shared_lock.acquire
end
clean_env() click to toggle source
# File lib/uc/unicorn/api.rb, line 77
def clean_env
  return if uc_config.config[:skip_clean_env]
  ENV.delete "BUNDLE_BIN_PATH"
  ENV.delete "RUBYLIB"
  ENV.delete "RUBYOPT"
  ENV.delete "GEM_HOME"
  ENV.delete "GEM_PATH"
  ENV.delete "BUNDLE_GEMFILE"
  ENV["PATH"] = cleaned_path
end
cleaned_path() click to toggle source
# File lib/uc/unicorn/api.rb, line 92
def cleaned_path
  paths = (ENV["PATH"] || "").split(File::PATH_SEPARATOR)
  paths.reject! { |x| x =~ /vendor\/bundle\/ruby/ }
  paths.uniq.join(File::PATH_SEPARATOR)
end
end_run(worker) click to toggle source
# File lib/uc/unicorn/api.rb, line 67
def end_run(worker)
  @init.end_run(worker)
end
gradual_shutdown(server, worker) click to toggle source
# File lib/uc/unicorn/api.rb, line 28
def gradual_shutdown(server, worker)
  gradual_shutdown = ::Uc::Unicorn::GradualShutdown.new(server, worker)
  gradual_shutdown.run
end
init(server) click to toggle source
# File lib/uc/unicorn/api.rb, line 23
def init(server)
  @init ||= ::Uc::Unicorn::Init.new(server)
  @init.run_once
end
init_original_env() click to toggle source
# File lib/uc/unicorn/api.rb, line 105
def init_original_env
  return if @original_env
  @original_env = ENV.to_h
end
load_env() click to toggle source
# File lib/uc/unicorn/api.rb, line 88
def load_env
  uc_config.load_env
end
load_original_env() click to toggle source
# File lib/uc/unicorn/api.rb, line 98
def load_original_env
  return if not @original_env.is_a? Hash
  # add unicorn specific environment vars like UNICORN_FD
  ENV.select { |k,v| k =~ /\AUNICORN_/ }.each { |k,v| @original_env[k] = v }
  ENV.replace(@original_env)
end
on_exec_fail() click to toggle source
# File lib/uc/unicorn/api.rb, line 71
def on_exec_fail
  event_stream = ::Uc::Logger.event_stream
  event_stream.close_connections
  event_stream.fatal "re-exec failed"
end
oom_adjust() click to toggle source
# File lib/uc/unicorn/api.rb, line 55
def oom_adjust
  pid = Process.pid
  oom_file = "/proc/#{pid}/oom_score_adj"
  File.open(oom_file,"w") do |f|
    f.write "800"
  end
end
prestart(server, worker, **kwargs) click to toggle source
# File lib/uc/unicorn/api.rb, line 33
def prestart(server, worker, **kwargs)
  prestart = ::Uc::Unicorn::Prestart.new(server, worker, **kwargs)
  prestart.run
end
send_worker_ready(server, worker, **kwargs) click to toggle source
# File lib/uc/unicorn/api.rb, line 38
def send_worker_ready(server, worker, **kwargs)
  ready_event = ::Uc::Unicorn::ReadyEvent.new(server, worker, **kwargs)
  ready_event.run_id = run_id
  ready_event.run
end
shared_env() click to toggle source
# File lib/uc/unicorn/api.rb, line 63
def shared_env
  @shared_env ||= {}
end
uc_config() click to toggle source
# File lib/uc/unicorn/api.rb, line 110
def uc_config
  @uc_config ||= ::Uc::Config.new(Dir.pwd)
end
wait_for_worker_ready(server, worker, **kwargs) click to toggle source
# File lib/uc/unicorn/api.rb, line 44
def wait_for_worker_ready(server, worker, **kwargs)
  ready_event_wait = ::Uc::Unicorn::ReadyWait.new(server, worker, **kwargs)
  ready_event_wait.run_id = run_id
  ready_event_wait.run
end