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.
Files changed (3) hide show
  1. checksums.yaml +8 -8
  2. data/lib/events.rb +121 -63
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MzRlMWU0MjUxNGIxYmFiZTBiN2YzMDYyZjdkN2Q1NTA3ZDdhYzFlOQ==
4
+ NDU1ZWIzMzRjYjRkM2IzZTQ1ODc2YTE5MjE0OTI3MzYwY2YzMTViNQ==
5
5
  data.tar.gz: !binary |-
6
- NzFlOGMwOWVhNWZkMDdmNWFkNDA1MDJhOTYxMjAxYWI5MDViZGM1ZA==
6
+ ODZlY2JmMGUxN2ExYWQ2OWM5YWExYTg5Y2ZiODkyODg1OTk5MWU4NA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- YzQ0ZjgyZGE0NGVhZWQwYjgxZjBjMmFiOThlYTFiZjZjZTVlZWFlZGRjOGRi
10
- MzdjMzUwOGRkYTI5NzZiMTVjMTNmMjIyMTkwZjE5ZWRlNDk2ODVmN2IzYjM4
11
- ZDZhYjI2NmE0MTczYjBiOWM5YTRkMDZlNWJiZmM5NjA0MGRlYzA=
9
+ M2E1OTI3ZTE2ZmNhOTNlM2E0YmNmYzc3OWNlYzc3NGI3ODM0NjUxZWM2YWIw
10
+ ZTBiZWM2MTA1ZDVmZTVmZDYzZTc4ZjZjMmI1MTgwYjU0NjkyNTk5MDE5NzA1
11
+ NzVjOGY3ODFjNWFkMWNkMmUwN2IwMjI0MTA5ZWNhOTlkZDU2NzQ=
12
12
  data.tar.gz: !binary |-
13
- YjdjOTBhNWRmMDNlZTQ0OTViMGNlOTQzMDViMzZkZDU5ODk4ODVkNmYyMzkx
14
- ZjU0ODNiNDU1N2E5MDA0ODk4NGM3OWYyODliNWExYzM2M2VlMTVmMDk2NmNi
15
- ZTA1MTdjNTI2NmMzOGNiNjNhYmJkYWI5MTk2MmRlODVhNzRhMTA=
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
- EXPIRE_DAYS = 7
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
- def self.get_logs(log_name, n_days_back=-1, filter={})
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.get_status(event_name, v_def=nil)
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.get_statuses(pattern='*')
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=>SITE_NAME, :event=>event, :v=>v}
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, duration_secs, n=1)
180
- redis.hincrby self.redis_key_stat, event_name+'_time', (duration_secs*1000).floor
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 1
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
- def self.get_stats(n_days_back=1)
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=>SITE_NAME, :created=>day.to_i, :event=>event, :amount=>v.to_i}
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
- # helper methods
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
- def self.redis_key_prefix
207
- "#{SITE_NAME=='' ? '' : SITE_NAME+':'}"
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.2
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-09 00:00:00.000000000 Z
11
+ date: 2013-04-12 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ''
14
14
  email: