Class: RailsPerformance::Utils

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_performance/utils.rb

Class Method Summary collapse

Class Method Details

.cache_key(now = Date.today) ⇒ Object

date key in redis store



5
6
7
# File 'lib/rails_performance/utils.rb', line 5

def Utils.cache_key(now = Date.today)
  "date-#{now}"
end

.daysObject



42
43
44
# File 'lib/rails_performance/utils.rb', line 42

def Utils.days
  (RP.duration % 24.days).parts[:days] + 1
end

.fetch_from_redis(query) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/rails_performance/utils.rb', line 32

def Utils.fetch_from_redis(query)
  #puts "\n\n   [REDIS QUERY]   -->   #{query}\n\n"

  keys   = RP.redis.keys(query)
  return [] if keys.blank?
  values = RP.redis.mget(keys)

  [keys, values]
end

.field_key(now = Time.now) ⇒ Object

write to current slot time - date -minute



11
12
13
# File 'lib/rails_performance/utils.rb', line 11

def Utils.field_key(now = Time.now)
  now.strftime("%H:%M")
end

.log_job_in_redis(e) ⇒ Object



15
16
17
18
19
# File 'lib/rails_performance/utils.rb', line 15

def Utils.log_job_in_redis(e)
  key   = "jobs|queue|#{e[:queue]}|worker|#{e[:worker]}|jid|#{e[:jid]}|datetime|#{e[:datetime]}|created_ati|#{e[:created_ati]}|enqueued_ati|#{e[:enqueued_ati]}|start_timei|#{e[:start_timei]}|status|#{e[:status]}|END"
  value = { message: e[:message], duration: e[:duration] }
  Utils.save_to_redis(key, value)
end

.log_request_in_redis(e) ⇒ Object



21
22
23
24
25
# File 'lib/rails_performance/utils.rb', line 21

def Utils.log_request_in_redis(e)
  value = e.slice(:view_runtime, :db_runtime, :duration, :HTTP_REFERER)
  key   = "performance|controller|#{e[:controller]}|action|#{e[:action]}|format|#{e[:format]}|status|#{e[:status]}|datetime|#{e[:datetime]}|datetimei|#{e[:datetimei]}|method|#{e[:method]}|path|#{e[:path]}|request_id|#{e[:request_id]}|END"
  Utils.save_to_redis(key, value)
end

.log_trace_in_redis(request_id, value) ⇒ Object



27
28
29
30
# File 'lib/rails_performance/utils.rb', line 27

def Utils.log_trace_in_redis(request_id, value)
  key = "trace|#{request_id}"
  Utils.save_to_redis(key, value, RailsPerformance::Reports::RecentRequestsReport::TIME_WINDOW.to_i)
end

.median(array) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/rails_performance/utils.rb', line 46

def Utils.median(array)
  sorted = array.sort
  size   = sorted.size
  center = size / 2

  if size == 0
    nil
  elsif size.even?
    (sorted[center - 1] + sorted[center]) / 2.0
  else
    sorted[center]
  end
end

.save_to_redis(key, value, expire = RP.duration.to_i) ⇒ Object



60
61
62
63
64
65
# File 'lib/rails_performance/utils.rb', line 60

def Utils.save_to_redis(key, value, expire = RP.duration.to_i)
  # puts "  [SAVE]    key  --->  #{key}\n"
  # puts "          value  --->  #{value.to_json}\n\n"
  RP.redis.set(key, value.to_json)
  RP.redis.expire(key, expire.to_i)
end