module Pushr::Daemon
Attributes
config[RW]
feedback_handler[RW]
logger[RW]
Public Class Methods
start(config)
click to toggle source
# File lib/pushr/daemon.rb, line 19 def self.start(config) self.config = config self.logger = Logger.new(foreground: config.foreground, error_notification: config.error_notification) setup_signal_hooks daemonize unless config.foreground start_app logger.info('[Daemon] Ready') sleep 1 until @shutting_down end
Protected Class Methods
daemonize()
click to toggle source
# File lib/pushr/daemon.rb, line 87 def self.daemonize exit if fork Process.setsid exit if fork Dir.chdir '/' File.umask 0000 STDIN.reopen '/dev/null' STDOUT.reopen '/dev/null', 'a' STDERR.reopen STDOUT PidFile.write(config.pid_file) end
handle_shutdown_signal()
click to toggle source
# File lib/pushr/daemon.rb, line 68 def self.handle_shutdown_signal exit 1 if @shutting_down @shutting_down = true shutdown end
load_stats_processor()
click to toggle source
# File lib/pushr/daemon.rb, line 52 def self.load_stats_processor require "#{Dir.pwd}/#{config.stats_processor}" if config.stats_processor rescue => e logger.error("Failed to stats_processor: #{e.inspect}") end
scale_redis_connections()
click to toggle source
# File lib/pushr/daemon.rb, line 44 def self.scale_redis_connections # feedback handler + app + app.totalconnections connections = 1 + 1 + App.total_connections Pushr::Core.configure do |config| config.redis = { size: connections } end end
setup_signal_hooks()
click to toggle source
# File lib/pushr/daemon.rb, line 58 def self.setup_signal_hooks @shutting_down = false %w(SIGINT SIGTERM).each do |signal| Signal.trap(signal) do handle_shutdown_signal end end end
shutdown()
click to toggle source
# File lib/pushr/daemon.rb, line 74 def self.shutdown print "\nShutting down..." feedback_handler.stop App.stop while Thread.list.count > 1 sleep 0.1 print '.' end print "\n" PidFile.delete(config.pid_file) end
start_app()
click to toggle source
# File lib/pushr/daemon.rb, line 35 def self.start_app load_stats_processor App.load scale_redis_connections App.start self.feedback_handler = FeedbackHandler.new(config.feedback_processor) feedback_handler.start end