class Sv::Config
Attributes
app_dir[R]
Public Class Methods
new(app_dir)
click to toggle source
# File lib/sv/config.rb, line 12 def initialize(app_dir) @app_dir = app_dir @instances = {} @working_dir = app_dir @namespace = SecureRandom.hex(3) end
Public Instance Methods
jobs()
click to toggle source
# File lib/sv/config.rb, line 31 def jobs @jobs ||= begin load_from_file jobs_map.values end end
logfile()
click to toggle source
# File lib/sv/config.rb, line 27 def logfile @logfile ||= "#{app_dir}/log/supervisord.log" end
pidfile()
click to toggle source
# File lib/sv/config.rb, line 23 def pidfile @pidfile ||= "#{app_dir}/tmp/pids/supervisor.pid" end
socket_path()
click to toggle source
# File lib/sv/config.rb, line 19 def socket_path @socket_path ||= "#{app_dir}/tmp/sockets/supervisor.sock" end
Private Instance Methods
instances(instances_map)
click to toggle source
# File lib/sv/config.rb, line 44 def instances(instances_map) @instances = instances_map end
job(name, &block)
click to toggle source
# File lib/sv/config.rb, line 48 def job(name, &block) name = name.to_sym j = jobs_map[name] || Job.new(name) j.instance_eval &block jobs_map[name] = j end
jobs_map()
click to toggle source
# File lib/sv/config.rb, line 40 def jobs_map @jobs_map ||= {} end
load_from_file()
click to toggle source
# File lib/sv/config.rb, line 59 def load_from_file load_jobs("#{app_dir}/config/jobs.yml", optional: true) read_config("#{app_dir}/config/jobs.rb", optional: true) read_config("#{app_dir}/config/sv.rb") validate_instances! set_instances set_working_dir set_namespace end
load_jobs(path, optional: false)
click to toggle source
# File lib/sv/config.rb, line 104 def load_jobs(path, optional: false) if not File.readable? path raise ::Sv::Error, "config file #{path} missing" if not optional return end require 'yaml' job_definitions = YAML.load_file(path) job_definitions.each do |j| name = j['name'].to_sym job = Job.new(name) job.update(j) jobs_map[name] = job end end
read_config(path, optional: false)
click to toggle source
# File lib/sv/config.rb, line 96 def read_config(path, optional: false) if not File.readable? path raise ::Sv::Error, "config file #{path} missing" if not optional return end instance_eval File.read(path), path end
set_instances()
click to toggle source
# File lib/sv/config.rb, line 78 def set_instances jobs_map.each do |name, job| job.numprocs @instances[name] if @instances.key? name end end
set_namespace()
click to toggle source
# File lib/sv/config.rb, line 90 def set_namespace jobs_map.each do |name, job| job.namespace = @namespace end end
set_working_dir()
click to toggle source
# File lib/sv/config.rb, line 84 def set_working_dir jobs_map.values.each do |job| job.working_dir || job.working_dir(@working_dir) end end
validate_instances!()
click to toggle source
# File lib/sv/config.rb, line 69 def validate_instances! invalid_jobs = [] @instances.each do |name, count| invalid_jobs << name if not jobs_map.has_key?(name) end return if invalid_jobs.empty? raise Error, "invalid jobs found in sv.rb: #{invalid_jobs}" end
working_dir(working_dir)
click to toggle source
# File lib/sv/config.rb, line 55 def working_dir(working_dir) @working_dir = working_dir end