Class: DaemonKit::Initializer

Inherits:
Object
  • Object
show all
Defined in:
lib/daemon_kit/initializer.rb

Overview

This class does all the nightmare work of setting up a working environment for your daemon.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(configuration) ⇒ Initializer

Returns a new instance of Initializer.



59
60
61
# File 'lib/daemon_kit/initializer.rb', line 59

def initialize( configuration )
  @configuration = configuration
end

Instance Attribute Details

#configurationObject (readonly)

Returns the value of attribute configuration.



40
41
42
# File 'lib/daemon_kit/initializer.rb', line 40

def configuration
  @configuration
end

Class Method Details

.continue!Object



49
50
51
52
# File 'lib/daemon_kit/initializer.rb', line 49

def self.continue!
  initializer = new DaemonKit.configuration
  initializer.after_daemonize
end

.run(configuration = Configuration.new) {|configuration| ... } ⇒ Object

Yields:



42
43
44
45
46
47
# File 'lib/daemon_kit/initializer.rb', line 42

def self.run( configuration = Configuration.new )
  yield configuration if block_given?
  initializer = new configuration
  initializer.before_daemonize
  initializer
end

.shutdownObject



54
55
56
57
# File 'lib/daemon_kit/initializer.rb', line 54

def self.shutdown
  DaemonKit.logger.warn "Shutting down"
  exit
end

Instance Method Details

#after_daemonizeObject



72
73
74
75
# File 'lib/daemon_kit/initializer.rb', line 72

def after_daemonize
  initialize_logger
  initialize_signal_traps
end

#before_daemonizeObject



63
64
65
66
67
68
69
70
# File 'lib/daemon_kit/initializer.rb', line 63

def before_daemonize
  DaemonKit.configuration = @configuration
  
  set_load_path
  load_gems
  load_patches
  load_environment
end

#initialize_loggerObject



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/daemon_kit/initializer.rb', line 104

def initialize_logger
  return if DaemonKit.logger
  
  unless logger = configuration.logger
    logger = Logger.new( configuration.log_path )
    logger.level = configuration.log_level
  end
  
  DaemonKit.logger = logger

  configuration.trap("USR1") {
    DaemonKit.logger.level = DaemonKit.logger.debug? ? Logger::INFO : Logger::DEBUG
    DaemonKit.logger.info "Log level changed to #{DaemonKit.logger.debug? ? 'DEBUG' : 'INFO' }"
  }
  configuration.trap("USR2") {
    DaemonKit.logger.level = Logger::DEBUG
    DaemonKit.logger.info "Log level changed to DEBUG"
  }

  DaemonKit.logger.info "DaemonKit up and running in #{DAEMON_ENV} mode"
end

#initialize_signal_trapsObject



126
127
128
129
130
# File 'lib/daemon_kit/initializer.rb', line 126

def initialize_signal_traps
  term_proc = Proc.new { DaemonKit::Initializer.shutdown }
  configuration.trap( 'INT', term_proc )
  configuration.trap( 'TERM', term_proc )
end

#load_environmentObject



93
94
95
96
97
98
99
100
101
102
# File 'lib/daemon_kit/initializer.rb', line 93

def load_environment
  return if @environment_loaded
  @environment_loaded = true
  
  config = configuration
  
  eval(IO.read(configuration.environment_path), binding, configuration.environment_path)
  
  eval(IO.read(configuration.daemon_initializer), binding, configuration.daemon_initializer) if File.exist?( configuration.daemon_initializer )
end

#load_gemsObject



83
84
85
# File 'lib/daemon_kit/initializer.rb', line 83

def load_gems
  
end

#load_patchesObject



87
88
89
90
91
# File 'lib/daemon_kit/initializer.rb', line 87

def load_patches
  if !!configuration.force_kill_wait
    require 'daemon_kit/patches/force_kill_wait'
  end
end

#set_load_pathObject



77
78
79
80
81
# File 'lib/daemon_kit/initializer.rb', line 77

def set_load_path
  configuration.load_paths.each do |d|
    $:.unshift( "#{DAEMON_ROOT}/#{d}" ) if File.directory?( "#{DAEMON_ROOT}/#{d}" )
  end
end