Module: TaskTempest::Bootstrap

Included in:
Engine
Defined in:
lib/task_tempest/bootstrap.rb

Instance Method Summary collapse

Instance Method Details

#after_initializeObject



144
145
146
147
148
149
150
# File 'lib/task_tempest/bootstrap.rb', line 144

def after_initialize
  @after_initialize ||= begin
    settings.after_initialize.call(logger)
    logger.info "after_initialize called"
    true
  end
end

#before_initializeObject



136
137
138
139
140
141
142
# File 'lib/task_tempest/bootstrap.rb', line 136

def before_initialize
  @before_initialize ||= begin
    logger.info "before_initialize called"
    settings.before_initialize.call(logger)
    true
  end
end

#bookkeeperObject



61
62
63
64
65
66
67
68
# File 'lib/task_tempest/bootstrap.rb', line 61

def bookkeeper
  @bookkeeper ||= begin
    Bookkeeper.new :storm => storm,
                   :queue_factory => Proc.new{ settings.queue.call(logger) },
                   :interval => settings.bookkeeping_interval,
                   :logger => logger
  end
end

#bootstrap(error_action) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/task_tempest/bootstrap.rb', line 70

def bootstrap(error_action)
  init_logging
  with_error_handling(error_action) do
    before_initialize
    init_require
    init_tasks
    init_thread_pool
    init_queue
    init_bookkeeper
    init_task_logging
    init_dispatcher
    after_initialize
  end
end

#dispatcherObject



51
52
53
54
55
56
57
58
59
# File 'lib/task_tempest/bootstrap.rb', line 51

def dispatcher
  @dispatcher ||= begin
    Dispatcher.new :logger => logger,
                   :task_logger => task_logger,
                   :queue_factory => Proc.new{ settings.queue.call(logger) },
                   :storm => storm,
                   :no_message_sleep => settings.no_message_sleep
  end
end

#init_bookkeeperObject



124
125
126
127
128
# File 'lib/task_tempest/bootstrap.rb', line 124

def init_bookkeeper
  @bookkeeper and return
  logger.info "initializing bookkeeper"
  bookkeeper
end

#init_dispatcherObject



130
131
132
133
134
# File 'lib/task_tempest/bootstrap.rb', line 130

def init_dispatcher
  @dispatcher and return
  logger.info "initializing dispatcher"
  dispatcher
end

#init_loggingObject



85
86
87
88
89
# File 'lib/task_tempest/bootstrap.rb', line 85

def init_logging
  @logger and return
  logger
  logger.info "logger initialized"
end

#init_queueObject



114
115
116
117
118
# File 'lib/task_tempest/bootstrap.rb', line 114

def init_queue
  @queue and return
  logger.info "initializing queue"
  queue
end

#init_requireObject



120
121
122
# File 'lib/task_tempest/bootstrap.rb', line 120

def init_require
  require "task_tempest/require"
end

#init_task_loggingObject



91
92
93
94
95
# File 'lib/task_tempest/bootstrap.rb', line 91

def init_task_logging
  @task_logger and return
  task_logger
  logger.info "task logger initialized"
end

#init_tasksObject



103
104
105
106
107
108
109
110
111
112
# File 'lib/task_tempest/bootstrap.rb', line 103

def init_tasks
  @init_tasks ||= begin
    logger.info "initializing tasks"
    Dir.glob("#{settings.task_dir}/*.rb").each do |file_path|
      logger.debug file_path
      require file_path
    end
    true
  end
end

#init_thread_poolObject



97
98
99
100
101
# File 'lib/task_tempest/bootstrap.rb', line 97

def init_thread_pool
  @storm and return
  logger.info "initializing thread pool"
  storm
end

#loggerObject



8
9
10
11
12
13
14
15
16
17
# File 'lib/task_tempest/bootstrap.rb', line 8

def logger
  @logger ||= begin
    log_name = settings.log_name || self.class.name
    path = "#{settings.log_dir}/#{log_name}.log"
    Logger.new(path).tap do |logger|
      logger.formatter = LogFormatter
      logger.level = settings.log_level
    end
  end
end

#queueObject



30
31
32
33
34
35
36
37
38
39
# File 'lib/task_tempest/bootstrap.rb', line 30

def queue
  @queue ||= begin
    case settings.queue
    when Proc
      settings.queue.call(logger)
    else
      settings.queue
    end
  end
end

#stormObject



41
42
43
44
45
46
47
48
49
# File 'lib/task_tempest/bootstrap.rb', line 41

def storm
  @storm ||= begin
    ThreadStorm.new :size => settings.threads,
                    :reraise => false,
                    :execute_blocks => true,
                    :timeout_method => settings.timeout_method,
                    :timeout => settings.task_timeout
  end
end

#task_loggerObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/task_tempest/bootstrap.rb', line 19

def task_logger
  @task_logger ||= begin
    log_name = settings.log_name || self.class.name
    path = "#{settings.log_dir}/#{log_name}.task.log"
    Logger.new(path).tap do |logger|
      logger.formatter = LogFormatter
      logger.level = settings.log_level
    end
  end
end