Class: Kogno::ServerCtl
- Inherits:
-
Object
- Object
- Kogno::ServerCtl
- Defined in:
- lib/core/bin_helpers/server_ctl.rb
Class Method Summary collapse
- .alive?(service) ⇒ Boolean
- .delete_pid(service) ⇒ Object
- .get_pid(service) ⇒ Object
- .kill_process(pid) ⇒ Object
- .log_environment_info ⇒ Object
- .options(option) ⇒ Object
- .pid_file(service) ⇒ Object
- .save_pid(pid, service) ⇒ Object
- .start ⇒ Object
- .status ⇒ Object
- .stop ⇒ Object
- .webhook_server_file ⇒ Object
Class Method Details
.alive?(service) ⇒ Boolean
44 45 46 47 48 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 44 def alive?(service) pid = get_pid(service) return false if pid == 0 Process.getpgid(pid) rescue false end |
.delete_pid(service) ⇒ Object
31 32 33 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 31 def delete_pid(service) save_pid("",service) end |
.get_pid(service) ⇒ Object
35 36 37 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 35 def get_pid(service) File.read(File.join(pid_file(service))).to_i end |
.kill_process(pid) ⇒ Object
39 40 41 42 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 39 def kill_process(pid) return false if pid.to_i == 0 Process.kill("KILL",pid) rescue nil end |
.log_environment_info ⇒ Object
5 6 7 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 5 def log_environment_info logger.write "Kogno #{Gem.loaded_specs["kogno"].version.version} server starting in #{Kogno::Application.config.environment}", :bright end |
.options(option) ⇒ Object
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 110 def (option) case option.to_sym when :start start when :stop stop when :status status when :restart stop start else puts "usage: server stop|start|restart|status" end end |
.pid_file(service) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 9 def pid_file(service) case service when 'webhook' return Application.file_path(File.join(Application.project_path,"tmp","webhook.pid")) when 'sequence' return Application.file_path(File.join(Application.project_path,"tmp","sequence.pid")) when 'scheduled_messages' return Application.file_path(File.join(Application.project_path,"tmp","scheduled_messages.pid")) else return 0 end end |
.save_pid(pid, service) ⇒ Object
27 28 29 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 27 def save_pid(pid, service) File.write(pid_file(service), pid) end |
.start ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 50 def start log_environment_info() if get_pid('webhook') > 0 logger.write "Http: daemon already started..", :red else logger.write "Http: starting daemon..", :green system(%{ RACK_ENV=#{Kogno::Application.config.environment} ruby #{self.webhook_server_file} daemon > /dev/null& echo $! > "#{self.pid_file('webhook')}" }) end if get_pid('sequence') > 0 logger.write "Sequence: daemon already started..", :red else logger.write "Sequence: starting daemon..", :green pid = fork do Logger.set(:sequences) require File.join(Kogno::Application.project_path,'application.rb') Sequence.process_all end save_pid(pid, 'sequence') end if get_pid('scheduled_messages') > 0 logger.write "Scheduled Messages: daemon already started..", :red else logger.write "Scheduled Messages: starting daemon..", :green pid = fork do Logger.set(:scheduled_messages) require File.join(Kogno::Application.project_path,'application.rb') ScheduledMessage.process_all end save_pid(pid, 'scheduled_messages') end end |
.status ⇒ Object
104 105 106 107 108 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 104 def status alive?('webhook') ? logger.write("Http running | Pid: #{get_pid('webhook')}..", :green) : logger.write("Http stopped", :red) alive?('sequence') ? logger.write("Sequences running | Pid: #{get_pid('sequence')}..", :green) : logger.write("Sequence stopped", :red) alive?('scheduled_messages') ? logger.write("Scheduled Messages running | Pid: #{get_pid('scheduled_messages')}..", :green) : logger.write("Scheduled Messages stopped", :red) end |
.stop ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 88 def stop sequence_pid = get_pid('sequence') kill_process(sequence_pid) delete_pid('sequence') webhook_pid = get_pid('webhook') kill_process(webhook_pid) delete_pid('webhook') = get_pid('scheduled_messages') kill_process() delete_pid('scheduled_messages') logger.write "STOP", :red end |
.webhook_server_file ⇒ Object
23 24 25 |
# File 'lib/core/bin_helpers/server_ctl.rb', line 23 def webhook_server_file File.join(Application.core_path,"lib/core/web/webhook.rb") end |