class Procodile::Config
Constants
- COLORS
Public Class Methods
new(root, procfile = nil)
click to toggle source
# File lib/procodile/config.rb, line 11 def initialize(root, procfile = nil) @root = root @procfile_path = procfile unless File.file?(procfile_path) raise Error, "Procfile not found at #{procfile_path}" end # We need to check to see if the local or options # configuration will override the root that we've been given. # If they do, we can throw away any reference to the one that the # configuration was initialized with and start using that immediately. if new_root = (local_options['root'] || options['root']) @root = new_root end FileUtils.mkdir_p(pid_root) @processes = process_list.each_with_index.each_with_object({}) do |((name, command), index), hash| hash[name] = create_process(name, command, COLORS[index.divmod(COLORS.size)[1]]) end @loaded_at = Time.now end
Public Instance Methods
app_name()
click to toggle source
# File lib/procodile/config.rb, line 85 def app_name @app_name ||= local_options['app_name'] || options['app_name'] || 'Procodile' end
console_command()
click to toggle source
# File lib/procodile/config.rb, line 89 def console_command local_options['console_command'] || options['console_command'] end
environment_variables()
click to toggle source
# File lib/procodile/config.rb, line 125 def environment_variables @environment_variables ||= begin (options['env'] || {}).merge(local_options['env'] || {}).each_with_object({}) do |(key, value), hash| hash[key.to_s] = value.to_s end end end
exec_prefix()
click to toggle source
# File lib/procodile/config.rb, line 93 def exec_prefix local_options['exec_prefix'] || options['exec_prefix'] end
loaded_at()
click to toggle source
# File lib/procodile/config.rb, line 77 def loaded_at @loaded_at end
local_options()
click to toggle source
# File lib/procodile/config.rb, line 113 def local_options @local_options ||= load_local_options_from_file end
local_options_path()
click to toggle source
# File lib/procodile/config.rb, line 172 def local_options_path procfile_path + ".local" end
local_process_options()
click to toggle source
# File lib/procodile/config.rb, line 117 def local_process_options @local_process_options ||= local_options['processes'] || {} end
log_path()
click to toggle source
# File lib/procodile/config.rb, line 141 def log_path log_path = local_options['log_path'] || options['log_path'] if log_path File.expand_path(log_path, self.root) elsif log_path.nil? && self.log_root File.join(self.log_root, 'procodile.log') else File.expand_path("procodile.log", self.root) end end
log_root()
click to toggle source
# File lib/procodile/config.rb, line 152 def log_root if log_root = (local_options['log_root'] || options['log_root']) File.expand_path(log_root, self.root) else nil end end
options()
click to toggle source
# File lib/procodile/config.rb, line 105 def options @options ||= load_options_from_file end
options_for_process(name)
click to toggle source
# File lib/procodile/config.rb, line 121 def options_for_process(name) (process_options[name] || {}).merge(local_process_options[name] || {}) end
options_path()
click to toggle source
# File lib/procodile/config.rb, line 168 def options_path procfile_path + ".options" end
pid_root()
click to toggle source
# File lib/procodile/config.rb, line 133 def pid_root File.expand_path(local_options['pid_root'] || options['pid_root'] || 'pids', self.root) end
process_list()
click to toggle source
# File lib/procodile/config.rb, line 101 def process_list @process_list ||= load_process_list_from_file end
process_options()
click to toggle source
# File lib/procodile/config.rb, line 109 def process_options @process_options ||= options['processes'] || {} end
processes()
click to toggle source
# File lib/procodile/config.rb, line 97 def processes @processes ||= {} end
procfile_path()
click to toggle source
# File lib/procodile/config.rb, line 164 def procfile_path @procfile_path || File.join(self.root, 'Procfile') end
reload()
click to toggle source
# File lib/procodile/config.rb, line 36 def reload @process_list = nil @options = nil @process_options = nil @local_options = nil @local_process_options = nil @loaded_at = nil @environment_variables = nil if @processes process_list.each do |name, command| if process = @processes[name] process.removed = false # This command is already in our list. Add it. if process.command != command process.command = command Procodile.log nil, 'system', "#{name} command has changed. Updated." end process.options = options_for_process(name) else Procodile.log nil, 'system', "#{name} has been added to the Procfile. Adding it." @processes[name] = create_process(name, command, COLORS[@processes.size.divmod(COLORS.size)[1]]) end end removed_processes = @processes.keys - process_list.keys removed_processes.each do |process_name| if p = @processes[process_name] p.removed = true @processes.delete(process_name) Procodile.log nil, 'system', "#{process_name} has been removed to the Procfile. It will be removed when it is stopped." end end end @loaded_at = Time.now end
root()
click to toggle source
# File lib/procodile/config.rb, line 73 def root @root end
sock_path()
click to toggle source
# File lib/procodile/config.rb, line 160 def sock_path File.join(pid_root, 'procodile.sock') end
supervisor_pid_path()
click to toggle source
# File lib/procodile/config.rb, line 137 def supervisor_pid_path File.join(pid_root, 'procodile.pid') end
user()
click to toggle source
# File lib/procodile/config.rb, line 81 def user local_options['user'] || options['user'] end
Private Instance Methods
create_process(name, command, log_color)
click to toggle source
# File lib/procodile/config.rb, line 178 def create_process(name, command, log_color) process = Process.new(self, name, command, options_for_process(name)) process.log_color = log_color process end
load_local_options_from_file()
click to toggle source
# File lib/procodile/config.rb, line 192 def load_local_options_from_file File.exist?(local_options_path) ? YAML.load_file(local_options_path) : {} end
load_options_from_file()
click to toggle source
# File lib/procodile/config.rb, line 188 def load_options_from_file File.exist?(options_path) ? YAML.load_file(options_path) : {} end
load_process_list_from_file()
click to toggle source
# File lib/procodile/config.rb, line 184 def load_process_list_from_file YAML.load_file(procfile_path) end