simple_events_redis 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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:
|