module RailsRequests

Constants

VERSION

Public Class Methods

cache_key(now = Date.current) click to toggle source

date key in redis store

# File lib/rails_requests.rb, line 25
def RailsRequests.cache_key(now = Date.current)
  "date-#{now}"
end
days() click to toggle source
# File lib/rails_requests.rb, line 34
def RailsRequests.days
  (RailsRequests.duration % 24.days).parts[:days] + 1
end
dump() click to toggle source
# File lib/rails_requests.rb, line 52
def RailsRequests.dump
@data = []

  all = {}
  RailsRequests.days.times do |e|
    date    = e.days.ago.to_date
    all[date] = RailsRequests.redis.hgetall(RailsRequests.cache_key(date))
  end

  stop    = Time.at(60 * (Time.now.to_i / 60))
  current = stop - RailsRequests.duration

  while current <= stop
    views = all.dig(current.to_date, current.strftime("%H:%M")) || 0

    @data << [current.to_i * 1000, views.to_i]

    current += 1.minute
  end

  @data.sort!
end
field_key(now = Time.now) click to toggle source

write to current slot time - date -minute

# File lib/rails_requests.rb, line 30
def RailsRequests.field_key(now = Time.now)
  now.strftime("%H:%M")
end
median(array) click to toggle source
# File lib/rails_requests.rb, line 38
def RailsRequests.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
populate_test_data(seed = 20, limit = 10000, days = 7) click to toggle source

populate test data run in rails c

# File lib/rails_requests.rb, line 77
def RailsRequests.populate_test_data(seed = 20, limit = 10000, days = 7)
  limit.times do
    t = rand(86400*days).seconds.ago # within last 7 days
    RailsRequests.redis.hincrby(RailsRequests.cache_key(t.to_date), RailsRequests.field_key(t), rand(seed))
  end
end
setup() { |self| ... } click to toggle source
# File lib/rails_requests.rb, line 20
def self.setup
  yield(self)
end