44 lines
903 B
Ruby
44 lines
903 B
Ruby
|
module Gitlab
|
||
|
module RequestProfiler
|
||
|
class Profile
|
||
|
attr_reader :name, :time, :request_path
|
||
|
|
||
|
alias_method :to_param, :name
|
||
|
|
||
|
def self.all
|
||
|
Dir["#{PROFILES_DIR}/*.html"].map do |path|
|
||
|
new(File.basename(path))
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def self.find(name)
|
||
|
name_dup = name.dup
|
||
|
name_dup << '.html' unless name.end_with?('.html')
|
||
|
|
||
|
file_path = "#{PROFILES_DIR}/#{name_dup}"
|
||
|
return unless File.exist?(file_path)
|
||
|
|
||
|
new(name_dup)
|
||
|
end
|
||
|
|
||
|
def initialize(name)
|
||
|
@name = name
|
||
|
|
||
|
set_attributes
|
||
|
end
|
||
|
|
||
|
def content
|
||
|
File.read("#{PROFILES_DIR}/#{name}")
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def set_attributes
|
||
|
_, path, timestamp = name.split(/(.*)_(\d+)\.html$/)
|
||
|
@request_path = path.tr('|', '/')
|
||
|
@time = Time.at(timestamp.to_i).utc
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|