Class: Procodile::Config
- Inherits:
-
Object
- Object
- Procodile::Config
- Defined in:
- lib/procodile/config.rb
Constant Summary collapse
- COLORS =
[35, 31, 36, 32, 33, 34]
Instance Method Summary collapse
- #app_name ⇒ Object
- #console_command ⇒ Object
- #environment_variables ⇒ Object
- #exec_prefix ⇒ Object
-
#initialize(root, procfile = nil) ⇒ Config
constructor
A new instance of Config.
- #loaded_at ⇒ Object
- #local_options ⇒ Object
- #local_options_path ⇒ Object
- #local_process_options ⇒ Object
- #log_path ⇒ Object
- #log_root ⇒ Object
- #options ⇒ Object
- #options_for_process(name) ⇒ Object
- #options_path ⇒ Object
- #pid_root ⇒ Object
- #process_list ⇒ Object
- #process_options ⇒ Object
- #processes ⇒ Object
- #procfile_path ⇒ Object
- #reload ⇒ Object
- #root ⇒ Object
- #sock_path ⇒ Object
- #supervisor_pid_path ⇒ Object
- #user ⇒ Object
Constructor Details
#initialize(root, procfile = nil) ⇒ Config
Returns a new instance of Config.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# 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 = (['root'] || ['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 |
Instance Method Details
#app_name ⇒ Object
85 86 87 |
# File 'lib/procodile/config.rb', line 85 def app_name @app_name ||= ['app_name'] || ['app_name'] || 'Procodile' end |
#console_command ⇒ Object
89 90 91 |
# File 'lib/procodile/config.rb', line 89 def console_command ['console_command'] || ['console_command'] end |
#environment_variables ⇒ Object
125 126 127 128 129 130 131 |
# File 'lib/procodile/config.rb', line 125 def environment_variables @environment_variables ||= begin (['env'] || {}).merge(['env'] || {}).each_with_object({}) do |(key, value), hash| hash[key.to_s] = value.to_s end end end |
#exec_prefix ⇒ Object
93 94 95 |
# File 'lib/procodile/config.rb', line 93 def exec_prefix ['exec_prefix'] || ['exec_prefix'] end |
#loaded_at ⇒ Object
77 78 79 |
# File 'lib/procodile/config.rb', line 77 def loaded_at @loaded_at end |
#local_options ⇒ Object
113 114 115 |
# File 'lib/procodile/config.rb', line 113 def @local_options ||= end |
#local_options_path ⇒ Object
172 173 174 |
# File 'lib/procodile/config.rb', line 172 def procfile_path + ".local" end |
#local_process_options ⇒ Object
117 118 119 |
# File 'lib/procodile/config.rb', line 117 def @local_process_options ||= ['processes'] || {} end |
#log_path ⇒ Object
141 142 143 144 145 146 147 148 149 150 |
# File 'lib/procodile/config.rb', line 141 def log_path log_path = ['log_path'] || ['log_path'] if log_path File.(log_path, self.root) elsif log_path.nil? && self.log_root File.join(self.log_root, 'procodile.log') else File.("procodile.log", self.root) end end |
#log_root ⇒ Object
152 153 154 155 156 157 158 |
# File 'lib/procodile/config.rb', line 152 def log_root if log_root = (['log_root'] || ['log_root']) File.(log_root, self.root) else nil end end |
#options ⇒ Object
105 106 107 |
# File 'lib/procodile/config.rb', line 105 def @options ||= end |
#options_for_process(name) ⇒ Object
121 122 123 |
# File 'lib/procodile/config.rb', line 121 def (name) ([name] || {}).merge([name] || {}) end |
#options_path ⇒ Object
168 169 170 |
# File 'lib/procodile/config.rb', line 168 def procfile_path + ".options" end |
#pid_root ⇒ Object
133 134 135 |
# File 'lib/procodile/config.rb', line 133 def pid_root File.(['pid_root'] || ['pid_root'] || 'pids', self.root) end |
#process_list ⇒ Object
101 102 103 |
# File 'lib/procodile/config.rb', line 101 def process_list @process_list ||= load_process_list_from_file end |
#process_options ⇒ Object
109 110 111 |
# File 'lib/procodile/config.rb', line 109 def @process_options ||= ['processes'] || {} end |
#processes ⇒ Object
97 98 99 |
# File 'lib/procodile/config.rb', line 97 def processes @processes ||= {} end |
#procfile_path ⇒ Object
164 165 166 |
# File 'lib/procodile/config.rb', line 164 def procfile_path @procfile_path || File.join(self.root, 'Procfile') end |
#reload ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# 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. = (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 ⇒ Object
73 74 75 |
# File 'lib/procodile/config.rb', line 73 def root @root end |
#sock_path ⇒ Object
160 161 162 |
# File 'lib/procodile/config.rb', line 160 def sock_path File.join(pid_root, 'procodile.sock') end |
#supervisor_pid_path ⇒ Object
137 138 139 |
# File 'lib/procodile/config.rb', line 137 def supervisor_pid_path File.join(pid_root, 'procodile.pid') end |
#user ⇒ Object
81 82 83 |
# File 'lib/procodile/config.rb', line 81 def user ['user'] || ['user'] end |