Module: Stackify
- Includes:
- Authorizable
- Defined in:
- lib/stackify/error.rb,
lib/stackify/engine.rb,
lib/stackify/version.rb,
lib/stackify-api-ruby.rb,
lib/stackify/scheduler.rb,
lib/stackify/msgs_queue.rb,
lib/stackify/env_details.rb,
lib/stackify/http_client.rb,
lib/stackify/logs_sender.rb,
lib/stackify/logger_proxy.rb,
lib/stackify/logger_client.rb,
lib/stackify/schedule_task.rb,
lib/stackify/schedule_delay.rb,
lib/stackify/workers/worker.rb,
lib/stackify/errors_governor.rb,
lib/stackify/metrics/metrics.rb,
lib/stackify/utils/msg_object.rb,
lib/stackify/rack/errors_catcher.rb,
lib/stackify/utils/configuration.rb,
lib/stackify/workers/auth_worker.rb,
lib/stackify/workers/add_msg_worker.rb,
lib/stackify/workers/msgs_queue_worker.rb,
lib/stackify/workers/logs_sender_worker.rb
Defined Under Namespace
Modules: Authorizable, Backtrace, Metrics, Utils
Classes: AddMsgWorker, AuthWorker, Configuration, Engine, EnvDetails, ErrorsCatcher, ErrorsGovernor, HttpClient, LoggerClient, LoggerProxy, LogsSender, LogsSenderWorker, MsgObject, MsgsQueue, MsgsQueueWorker, ScheduleDelay, ScheduleTask, Scheduler, StackifiedError, StringException, Worker
Constant Summary
collapse
- VERSION =
'1.0.14'
- INTERNAL_LOG_PREFIX =
'[Stackify]'.freeze
- STATUSES =
{ working: 'working', terminating: 'terminating', terminated: 'terminated'}
- MODES =
{ logging: :logging, metrics: :metrics, both: :both }
Class Attribute Summary collapse
Class Method Summary
collapse
included
Class Attribute Details
.config=(value) ⇒ Object
Sets the attribute config
38
39
40
|
# File 'lib/stackify-api-ruby.rb', line 38
def config=(value)
@config = value
end
|
Class Method Details
.add_dependant_worker(worker) ⇒ Object
90
91
92
|
# File 'lib/stackify-api-ruby.rb', line 90
def add_dependant_worker worker
@workers << worker
end
|
.alive_adding_msg_workers ⇒ Object
82
83
84
|
# File 'lib/stackify-api-ruby.rb', line 82
def alive_adding_msg_workers
@workers.select{ |w| w.alive? && w.type == :add_msg }
end
|
.delete_worker(worker) ⇒ Object
86
87
88
|
# File 'lib/stackify-api-ruby.rb', line 86
def delete_worker worker
@workers.delete worker
end
|
.internal_log(level, msg) ⇒ Object
.is_valid? ⇒ Boolean
145
146
147
|
# File 'lib/stackify-api-ruby.rb', line 145
def is_valid?
configuration.is_valid?
end
|
.log_internal_error(msg) ⇒ Object
71
72
73
|
# File 'lib/stackify-api-ruby.rb', line 71
def logger
self.configuration.logger
end
|
.logs_sender ⇒ Object
67
68
69
|
# File 'lib/stackify-api-ruby.rb', line 67
def logs_sender
@logs_sender ||= Stackify::LogsSender.new
end
|
.make_remained_job ⇒ Object
140
141
142
143
|
# File 'lib/stackify-api-ruby.rb', line 140
def make_remained_job
@status = STATUSES[:terminating]
Stackify.msgs_queue.push_remained_msgs
end
|
.msgs_queue ⇒ Object
59
60
61
|
# File 'lib/stackify-api-ruby.rb', line 59
def msgs_queue
@msgs_queue ||= Stackify::MsgsQueue.new
end
|
.run(async = true) ⇒ Object
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/stackify-api-ruby.rb', line 106
def run async = true
if Stackify.is_valid?
at_exit { make_remained_job }
t1 = Thread.new { Stackify.authorize }
case Stackify.configuration.mode
when MODES[:both]
t2 = start_logging
t3 = start_metrics
when MODES[:logging]
t2 = start_logging
when MODES[:metrics]
t3 = start_metrics
end
unless async
t1.join
t2.join if t2
end
else
Stackify.log_internal_error "Stackify is not properly configured! Errors: #{Stackify.configuration.errors}"
end
end
|
.setup {|configuration| ... } ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/stackify-api-ruby.rb', line 44
def setup
@workers = []
yield(configuration) if block_given?
if configuration.is_valid?
@status = STATUSES[:working]
else
msg = "Stackify's configuration is not valid!"
configuration.errors.each do |error_msg|
msg += "\n" + error_msg
end
raise msg
end
end
|
.shutdown_all(caller_obj = nil) ⇒ Object
75
76
77
78
79
80
|
# File 'lib/stackify-api-ruby.rb', line 75
def shutdown_all caller_obj=nil
Stackify.status = Stackify::STATUSES[:terminating]
@workers.each do |worker|
worker.shutdown! unless worker.equal? caller_obj
end
end
|
.start_logging ⇒ Object
128
129
130
|
# File 'lib/stackify-api-ruby.rb', line 128
def start_logging
msgs_queue
end
|
94
95
96
|
# File 'lib/stackify-api-ruby.rb', line 94
def status
@status
end
|
.status=(status) ⇒ Object
161
162
163
164
165
166
167
|
# File 'lib/stackify-api-ruby.rb', line 161
def status= status
if STATUSES.has_value? status
@status = status
else
raise "method 'status=' should get one of arguments #{STATUSES.values}, not a #{status}"
end
end
|
.terminated? ⇒ Boolean
153
154
155
|
# File 'lib/stackify-api-ruby.rb', line 153
def terminated?
@status == STATUSES[:terminated]
end
|
.terminating? ⇒ Boolean
149
150
151
|
# File 'lib/stackify-api-ruby.rb', line 149
def terminating?
@status == STATUSES[:terminating]
end
|
136
137
138
|
# File 'lib/stackify-api-ruby.rb', line 136
def workers
@workers
end
|
.working? ⇒ Boolean
157
158
159
|
# File 'lib/stackify-api-ruby.rb', line 157
def working?
@status == STATUSES[:working]
end
|