simple_events_redis 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/events.rb +121 -63
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDU1ZWIzMzRjYjRkM2IzZTQ1ODc2YTE5MjE0OTI3MzYwY2YzMTViNQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ODZlY2JmMGUxN2ExYWQ2OWM5YWExYTg5Y2ZiODkyODg1OTk5MWU4NA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2E1OTI3ZTE2ZmNhOTNlM2E0YmNmYzc3OWNlYzc3NGI3ODM0NjUxZWM2YWIw
|
10
|
+
ZTBiZWM2MTA1ZDVmZTVmZDYzZTc4ZjZjMmI1MTgwYjU0NjkyNTk5MDE5NzA1
|
11
|
+
NzVjOGY3ODFjNWFkMWNkMmUwN2IwMjI0MTA5ZWNhOTlkZDU2NzQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OTY3NzEyMjQ3ZjJkNTUxNTk0MjAwNGY3N2Y5ODg2ZTlkYjQ4MTNhMmZiNWNj
|
14
|
+
ZTYzYzVhMTRmNGM5MzJmZDNjZTU4OTQ1OGY0OWJjYjdhNDQxYmYxNDYyM2Jl
|
15
|
+
ZTk2YjAyMGE4N2RkOTk4YjYzNjViOWVlNDg3MTAyMWIyODEwYzU=
|
data/lib/events.rb
CHANGED
@@ -4,14 +4,32 @@
|
|
4
4
|
|
5
5
|
class Events
|
6
6
|
# static data
|
7
|
-
#PROCESSES = ['effects']
|
8
|
-
SITE_NAME = ''
|
9
7
|
|
10
|
-
|
8
|
+
@@SITE_NAME = '' # default site
|
9
|
+
|
10
|
+
# config
|
11
|
+
@@config = {:EXPIRE_DAYS=>7}
|
12
|
+
|
11
13
|
|
12
14
|
|
13
15
|
@@redis = nil
|
14
16
|
|
17
|
+
def self.this_site_name
|
18
|
+
return @@SITE_NAME
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.this_site_name=(v)
|
22
|
+
@@SITE_NAME = v
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.config(iv)
|
26
|
+
return @@config[iv]
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.set_config(hash)
|
30
|
+
hash.each_pair { |k,v| @@config[k] = v }
|
31
|
+
end
|
32
|
+
|
15
33
|
# redis object to access Redis server
|
16
34
|
def self.redis
|
17
35
|
return @@redis unless @redis.nil?
|
@@ -60,7 +78,7 @@
|
|
60
78
|
s = JSON.generate(hash)
|
61
79
|
|
62
80
|
redis.rpush rkey, s
|
63
|
-
redis.expireat rkey, t+EXPIRE_DAYS*24*60*60
|
81
|
+
redis.expireat rkey, t+self.config(:EXPIRE_DAYS)*24*60*60
|
64
82
|
|
65
83
|
return true
|
66
84
|
end
|
@@ -80,9 +98,8 @@
|
|
80
98
|
end
|
81
99
|
|
82
100
|
|
83
|
-
|
84
|
-
|
85
|
-
all_keys = redis.keys(self.redis_key_log_prefix + "#{log_name}:" +'*')
|
101
|
+
def self.get_logs_of_site(site_name, log_name, n_days_back=-1, filter={})
|
102
|
+
all_keys = redis.keys(self.redis_key_log_prefix(site_name) + "#{log_name}:" +'*')
|
86
103
|
|
87
104
|
return [] if all_keys.nil?
|
88
105
|
|
@@ -136,6 +153,9 @@
|
|
136
153
|
end
|
137
154
|
|
138
155
|
|
156
|
+
def self.get_logs(log_name, n_days_back=-1, filter={})
|
157
|
+
return get_logs_of_site(self.this_site_name, log_name, n_days_back, filter)
|
158
|
+
end
|
139
159
|
|
140
160
|
|
141
161
|
|
@@ -146,26 +166,35 @@
|
|
146
166
|
return true
|
147
167
|
end
|
148
168
|
|
149
|
-
def self.
|
150
|
-
v = redis.hget self.redis_key_status, event_name
|
169
|
+
def self.get_status_of_site(site_name, event_name, v_def=nil)
|
170
|
+
v = redis.hget self.redis_key_status(site_name), event_name
|
151
171
|
v ||= v_def
|
152
172
|
v
|
153
173
|
end
|
154
174
|
|
155
|
-
def self.
|
175
|
+
def self.get_status(event_name, v_def=nil)
|
176
|
+
return get_status_of_site(self.this_site_name, event_name, v_def)
|
177
|
+
end
|
178
|
+
|
179
|
+
|
180
|
+
def self.get_statuses_of_site(site_name, pattern='*')
|
156
181
|
# event_names like 'name*'
|
157
182
|
|
158
183
|
rows = []
|
159
184
|
|
160
|
-
all_values = redis.hgetall self.redis_key_status
|
185
|
+
all_values = redis.hgetall self.redis_key_status(site_name)
|
161
186
|
|
162
187
|
all_values.each do |event, v|
|
163
|
-
rows << {:site=>
|
188
|
+
rows << {:site=>site_name, :event=>event, :v=>v, }
|
164
189
|
end
|
165
190
|
|
166
191
|
rows
|
167
192
|
end
|
168
193
|
|
194
|
+
def self.get_statuses(pattern='*')
|
195
|
+
return get_statuses_of_site(self.this_site_name, pattern)
|
196
|
+
end
|
197
|
+
|
169
198
|
|
170
199
|
|
171
200
|
# counters
|
@@ -176,22 +205,43 @@
|
|
176
205
|
return true
|
177
206
|
end
|
178
207
|
|
179
|
-
def self.stat_add_perf(event_name,
|
180
|
-
redis.hincrby self.redis_key_stat, event_name+'_time',
|
208
|
+
def self.stat_add_perf(event_name, duration, n=1)
|
209
|
+
redis.hincrby self.redis_key_stat, event_name+'_time', duration
|
181
210
|
redis.hincrby self.redis_key_stat, event_name+'_n', 1
|
182
211
|
|
183
|
-
return
|
212
|
+
return true
|
184
213
|
end
|
185
214
|
|
215
|
+
def self.stat_perf_measure(event_name)
|
216
|
+
s = Time.now
|
217
|
+
yield
|
218
|
+
e = Time.now
|
186
219
|
|
187
|
-
|
220
|
+
duration = e - s
|
221
|
+
|
222
|
+
self.stat_add_perf event_name, duration
|
223
|
+
end
|
224
|
+
|
225
|
+
|
226
|
+
def self.get_stat_of_site(site_name, event_name, v_def=0)
|
227
|
+
v = redis.hget self.redis_key_stat(site_name), event_name
|
228
|
+
v ||= v_def
|
229
|
+
v
|
230
|
+
end
|
231
|
+
|
232
|
+
def self.get_stat(event_name, v_def=0)
|
233
|
+
return get_stat_of_site(self.this_site_name, event_name, v_def)
|
234
|
+
end
|
235
|
+
|
236
|
+
|
237
|
+
def self.get_stats_of_site(site_name, n_days_back=1)
|
188
238
|
rows = []
|
189
239
|
|
190
|
-
self.stat_walk(n_days_back, 0) do |key, day|
|
240
|
+
self.stat_walk(site_name, n_days_back, 0) do |key, day|
|
191
241
|
all_values = redis.hgetall key
|
192
242
|
|
193
243
|
all_values.each do |event, v|
|
194
|
-
rows << {:site=>
|
244
|
+
rows << {:site=>site_name, :created=>day.to_i, :date=>Time.at(day.to_i), :event=>event, :amount=>v.to_i}
|
195
245
|
end
|
196
246
|
end
|
197
247
|
|
@@ -199,46 +249,86 @@
|
|
199
249
|
end
|
200
250
|
|
201
251
|
|
252
|
+
def self.get_stats(n_days_back=1)
|
253
|
+
return get_stats_of_site(self.this_site_name, n_days_back)
|
254
|
+
end
|
202
255
|
|
256
|
+
def self.stat_walk(site_name, n_days_back_from, n_days_back_to)
|
257
|
+
tnow = Time.now.utc.to_i
|
203
258
|
|
204
|
-
|
259
|
+
key_prefix = self.redis_key_stat_prefix(site_name)
|
260
|
+
keys = redis.keys key_prefix + "*"
|
261
|
+
|
262
|
+
keys.each do |key|
|
263
|
+
# parse key
|
264
|
+
mm = key.scan(/#{key_prefix}(\d+)$/i)
|
265
|
+
|
266
|
+
next if mm.nil? || mm[0].nil?
|
267
|
+
|
268
|
+
day = self.parse_date(mm[0][0])
|
205
269
|
|
206
|
-
|
207
|
-
|
270
|
+
next if day.nil?
|
271
|
+
|
272
|
+
# too old
|
273
|
+
if n_days_back_from>=0
|
274
|
+
next if tnow - day.to_i > n_days_back_from * (60*60*24)
|
275
|
+
end
|
276
|
+
|
277
|
+
# too fresh
|
278
|
+
if n_days_back_to>=0
|
279
|
+
next if tnow - day.to_i < n_days_back_to * (60*60*24)
|
280
|
+
end
|
281
|
+
|
282
|
+
# do the work
|
283
|
+
yield(key, day)
|
284
|
+
|
285
|
+
end
|
208
286
|
end
|
209
287
|
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
|
292
|
+
# helper methods
|
293
|
+
|
210
294
|
def self.key_day(d=nil)
|
211
295
|
d ||= DateTime.now.new_offset(0)
|
212
296
|
|
213
297
|
d.strftime("%Y%m%d")
|
214
298
|
end
|
215
299
|
|
300
|
+
def self.redis_key_prefix(site_name=nil)
|
301
|
+
site_name ||= self.this_site_name
|
302
|
+
|
303
|
+
"#{site_name=='' ? '' : site_name+':'}"
|
304
|
+
end
|
305
|
+
|
216
306
|
|
217
307
|
# redis keys for log
|
218
|
-
def self.redis_key_log_prefix
|
219
|
-
self.redis_key_prefix + "log:"
|
308
|
+
def self.redis_key_log_prefix(site_name=nil)
|
309
|
+
self.redis_key_prefix(site_name) + "log:"
|
220
310
|
end
|
221
311
|
|
222
|
-
def self.redis_key_log(name)
|
223
|
-
self.redis_key_log_prefix + "#{name}:" + self.key_day
|
312
|
+
def self.redis_key_log(name, site_name=nil)
|
313
|
+
self.redis_key_log_prefix(site_name) + "#{name}:" + self.key_day
|
224
314
|
end
|
225
315
|
|
226
316
|
|
227
317
|
# redis keys for status
|
228
318
|
|
229
|
-
def self.redis_key_status
|
230
|
-
self.redis_key_prefix + 'status'
|
319
|
+
def self.redis_key_status(site_name=nil)
|
320
|
+
self.redis_key_prefix(site_name) + 'status'
|
231
321
|
end
|
232
322
|
|
233
323
|
|
234
324
|
# redis keys for stat
|
235
325
|
|
236
|
-
def self.redis_key_stat_prefix
|
237
|
-
self.redis_key_prefix + 'stat:'
|
326
|
+
def self.redis_key_stat_prefix(site_name=nil)
|
327
|
+
self.redis_key_prefix(site_name) + 'stat:'
|
238
328
|
end
|
239
329
|
|
240
|
-
def self.redis_key_stat
|
241
|
-
self.redis_key_stat_prefix + self.key_day
|
330
|
+
def self.redis_key_stat(site_name=nil)
|
331
|
+
self.redis_key_stat_prefix(site_name) + self.key_day
|
242
332
|
end
|
243
333
|
|
244
334
|
|
@@ -308,38 +398,6 @@
|
|
308
398
|
end
|
309
399
|
|
310
400
|
|
311
|
-
def self.stat_walk(n_days_back_from, n_days_back_to)
|
312
|
-
|
313
|
-
tnow = Time.now.utc_to_i
|
314
|
-
|
315
|
-
key_prefix = self.redis_key_stat_prefix
|
316
|
-
keys = redis.keys key_prefix + "*"
|
317
|
-
|
318
|
-
keys.each do |key|
|
319
|
-
# parse key
|
320
|
-
mm = key.scan(/#{key_prefix}:(\d+)$/i)
|
321
|
-
|
322
|
-
next if mm.nil? || mm[0].nil?
|
323
|
-
|
324
|
-
day = self.parse_date(mm[0][0])
|
325
|
-
|
326
|
-
next if day.nil?
|
327
|
-
|
328
|
-
# too old
|
329
|
-
if n_days_back_from>=0
|
330
|
-
next if tnow - day.to_i > n_days_back_from * (60*60*24)
|
331
|
-
end
|
332
|
-
|
333
|
-
# too fresh
|
334
|
-
if n_days_back_to>=0
|
335
|
-
next if tnow - day.to_i < n_days_back_to * (60*60*24)
|
336
|
-
end
|
337
|
-
|
338
|
-
# do the work
|
339
|
-
yield(key, day)
|
340
|
-
|
341
|
-
end
|
342
|
-
end
|
343
401
|
|
344
402
|
end
|
345
403
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_events_redis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ! 'Max Ivak '
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: ''
|
14
14
|
email:
|