Class: Sv::Supervisor::Config

Inherits:
Object
  • Object
show all
Includes:
Logger
Defined in:
lib/sv/supervisor/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Logger

logger, #logger, stderr, #stderr

Constructor Details

#initialize(config) ⇒ Config

Returns a new instance of Config.



11
12
13
# File 'lib/sv/supervisor/config.rb', line 11

def initialize(config)
  @config = config
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



9
10
11
# File 'lib/sv/supervisor/config.rb', line 9

def config
  @config
end

Instance Method Details

#bindingObject



54
55
56
57
58
59
60
61
# File 'lib/sv/supervisor/config.rb', line 54

def binding
  opts = OpenStruct.new
  opts.socket_path = File.realdirpath config.socket_path
  opts.pidfile = File.realdirpath config.pidfile
  opts.logfile = File.realdirpath config.logfile
  opts.rendered_jobs = rendered_jobs
  opts.instance_eval { binding }
end

#generate_config_fileObject



24
25
26
27
28
29
30
31
# File 'lib/sv/supervisor/config.rb', line 24

def generate_config_file
  erb = ERB.new(File.read(template), nil, '-')
  File.open(path, 'w') do |f|
    f.write erb.result(binding)
  end 
rescue => e
  raise ::Sv::Error, "unable to generate supervisor config"
end

#generate_onceObject



33
34
35
36
37
# File 'lib/sv/supervisor/config.rb', line 33

def generate_once
  return if @config_generated
  generate_config_file
  @config_generated = true
end

#generated_pathObject



19
20
21
22
# File 'lib/sv/supervisor/config.rb', line 19

def generated_path
  generate_once
  path
end

#pathObject



15
16
17
# File 'lib/sv/supervisor/config.rb', line 15

def path
  @path ||= File.realdirpath "#{config.app_dir}/tmp/supervisor.conf"
end

#rendered_jobsObject



43
44
45
46
47
48
49
50
51
52
# File 'lib/sv/supervisor/config.rb', line 43

def rendered_jobs
  jobs = config.jobs
  jobs.inject("")  do |str, job|
    logger.debug "rendering #{job}"
    render = job.render 
    logger.debug render
    str << render if render
    str
  end
end

#templateObject



39
40
41
# File 'lib/sv/supervisor/config.rb', line 39

def template
  "#{__dir__}/../templates/supervisor.conf.erb"
end