class RailsMemoryBloat::Request

Attributes

previous[RW]
process[RW]
record_count[RW]
records[RW]
resource[RW]
rss[RW]
user_id[RW]

Public Class Methods

new(*args) click to toggle source
Calls superclass method
# File lib/rails_memory_bloat/request.rb, line 7
def self.new(*args)
  o = super(*args)
  (@@instances << o) && o
end
new(log_string) click to toggle source
# File lib/rails_memory_bloat/request.rb, line 12
def initialize(log_string)
  unless log_string =~ /PID: (\d+) Project: (\w+) User: (\w+) Mem: (\d+)/
    abort("invalid line: #{log_string.strip}")  
  end

  pid, @project, @user_id, @rss = [$1, $2, $3, $4].map(&:to_i)
  @process = RailsMemoryBloat::RailsProcess.find(pid)

  unless log_string =~ /Records: \(((\d+)( \| \w+: \d+)*)\); (.+)/
    abort("invalid line: #{log_string.strip}")  
  end

  @records, @record_count, @resource = $1, $2.to_i, RailsMemoryBloat::Resource.find($4)
  @records = @records.split(' | ')[1..-1]

  process.add_request(self)
end
sort(*args, &block) click to toggle source
# File lib/rails_memory_bloat/request.rb, line 30
def self.sort(*args, &block)
  @@instances.sort(*args, &block)
end

Public Instance Methods

bloat() click to toggle source
# File lib/rails_memory_bloat/request.rb, line 34
def bloat
  rss - (previous ? previous.rss : rss)
end
memory_used() click to toggle source
# File lib/rails_memory_bloat/request.rb, line 38
def memory_used
  [rss - process.baseline_rss, 0].max
end