Class: Adminix::Watcher
- Inherits:
-
Object
- Object
- Adminix::Watcher
- Defined in:
- lib/adminix/watcher.rb
Instance Attribute Summary collapse
-
#quit ⇒ Object
readonly
Returns the value of attribute quit.
Class Method Summary collapse
Instance Method Summary collapse
- #app_service ⇒ Object
- #check_logs ⇒ Object
- #check_system_load ⇒ Object
- #execute_jobs ⇒ Object
-
#initialize(app_service, options) ⇒ Watcher
constructor
A new instance of Watcher.
- #perform(job) ⇒ Object
- #send_logs ⇒ Object
- #send_system_load ⇒ Object
- #service ⇒ Object
- #stop ⇒ Object
- #sync_service ⇒ Object
- #wait? ⇒ Boolean
Constructor Details
#initialize(app_service, options) ⇒ Watcher
Returns a new instance of Watcher.
44 45 46 47 48 49 50 |
# File 'lib/adminix/watcher.rb', line 44 def initialize(app_service, ) @options = @running_jobs = [] @app_service = app_service @system_load_service = Services::SystemLoadService.new(service) @quit = false end |
Instance Attribute Details
#quit ⇒ Object (readonly)
Returns the value of attribute quit.
5 6 7 |
# File 'lib/adminix/watcher.rb', line 5 def quit @quit end |
Class Method Details
.run!(app_service, options) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/adminix/watcher.rb', line 7 def self.run!(app_service, ) Adminix.logger.info "Starting watcher PID is #{Process.pid}" EM.run do w = Adminix.watcher = Adminix::Watcher.new(app_service, ) c = Adminix.config p = c.watcher_period if c.web_debugger_enabled? Adminix.logger.info "Web debugger is running on port #{c.server_port}" EM.start_server('0.0.0.0', c.server_port, Web::Router) end if Adminix.config.watch_system_load? EM.add_periodic_timer(p[:check_system_load]) { w.perform(:check_system_load) } EM.add_periodic_timer(p[:send_system_load]) { w.perform(:send_system_load) } end if Adminix.config.watch_logs? EM.add_periodic_timer(p[:send_logs]) { w.perform(:send_logs) } Adminix.config.log_files.each do |path| EventMachine.file_tail(path, Adminix::Helpers::LogReader) end end if c.credentials_defined? EM.add_periodic_timer(p[:sync_service]) { w.perform(:sync_service) } end EM.add_periodic_timer(p[:execute_jobs]) { w.perform(:execute_jobs) } EM.add_periodic_timer(2) do if w.quit && !w.wait? Adminix.logger.info 'Stopping watcher...' EM.stop end end trap('TERM') { w.stop } trap('INT') { w.stop } end end |
Instance Method Details
#app_service ⇒ Object
98 99 100 |
# File 'lib/adminix/watcher.rb', line 98 def app_service @app_service end |
#check_logs ⇒ Object
60 61 62 |
# File 'lib/adminix/watcher.rb', line 60 def check_logs Adminix.logger.debug 'Checking logs...' end |
#check_system_load ⇒ Object
64 65 66 67 |
# File 'lib/adminix/watcher.rb', line 64 def check_system_load Adminix.logger.debug 'Checking system load...' @system_load_service.create_stamp end |
#execute_jobs ⇒ Object
74 75 76 77 78 |
# File 'lib/adminix/watcher.rb', line 74 def execute_jobs return unless @app_service.service.new_jobs? Adminix.logger.info 'Executing jobs...' @app_service.run_jobs end |
#perform(job) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/adminix/watcher.rb', line 52 def perform(job) return if @running_jobs.include?(job) || @quit @running_jobs << job send(job) @running_jobs.delete(job) end |
#send_logs ⇒ Object
80 81 82 83 |
# File 'lib/adminix/watcher.rb', line 80 def send_logs Adminix.logger.debug 'Adding logs to sending queue...' @app_service.allow_sending_logs end |
#send_system_load ⇒ Object
85 86 87 88 |
# File 'lib/adminix/watcher.rb', line 85 def send_system_load Adminix.logger.debug 'Adding system load to sending queue...' @app_service.allow_sending_system_load end |
#service ⇒ Object
94 95 96 |
# File 'lib/adminix/watcher.rb', line 94 def service @app_service.service end |
#stop ⇒ Object
102 103 104 |
# File 'lib/adminix/watcher.rb', line 102 def stop @quit = true end |
#sync_service ⇒ Object
69 70 71 72 |
# File 'lib/adminix/watcher.rb', line 69 def sync_service Adminix.logger.info 'Syncing service...' @app_service.sync end |
#wait? ⇒ Boolean
90 91 92 |
# File 'lib/adminix/watcher.rb', line 90 def wait? !@running_jobs.count.zero? end |