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.
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: