module One9::Report

Public Instance Methods

changes(query=nil) click to toggle source
# File lib/one9/report.rb, line 20
def changes(query=nil)
  meths = One9.load_methods
  meths = query_methods(meths, query)
  table meths, :fields => [:name, :message, :type],
    :headers => {:name => 'method', :stacks => 'lines'}
end
later(meths, stacks) click to toggle source
# File lib/one9/report.rb, line 53
def later(meths, stacks)
  File.unlink(lock_file) if File.exists?(lock_file)
  at_exit { print_and_save(meths, stacks) }
end
lines(*args) click to toggle source
# File lib/one9/report.rb, line 13
def lines(*args)
  parse_options(args)
  meths, stacks = setup
  results = method_lines(meths, stacks, args[0])
  table results.map {|m,l| [m.name, l] } , :change_fields => [:method, :line]
end
list(*args) click to toggle source
# File lib/one9/report.rb, line 6
def list(*args)
  parse_options(args)
  meths, stacks = setup
  meths = query_methods(meths, args[0])
  print(meths, stacks)
end
lock_file() click to toggle source
# File lib/one9/report.rb, line 62
def lock_file
  "#{One9.dir}/report.lock"
end
marshal_file() click to toggle source
# File lib/one9/report.rb, line 58
def marshal_file
  "#{One9.dir}/one9.marshal"
end
print(meths, stacks) click to toggle source
quickfix(*args) click to toggle source
# File lib/one9/report.rb, line 27
def quickfix(*args)
  parse_options(args)
  meths, stacks = setup
  results = method_lines(meths, stacks, args[0])
  results.map! {|meth, trace|
    trace[/^([^:]+:\d+:?)(.*)/] ? "#{$1} #{meth.name} - #{meth.message}" : trace
  }
  puts results
end
report_exists!() click to toggle source
# File lib/one9/report.rb, line 49
def report_exists!
  raise(NoReportError) unless File.exists? marshal_file
end

Private Instance Methods

method_lines(meths, stacks, query) click to toggle source
# File lib/one9/report.rb, line 86
def method_lines(meths, stacks, query)
  objs = query_methods(meths, query)
  results = ReportMethod.create(objs, stacks)
  results.inject([]) {|arr, e|
    arr += e.stacks.map {|f| [e, f] }
  }
end
parse_options(args) click to toggle source
# File lib/one9/report.rb, line 67
def parse_options(args)
  One9.config[:all] = args.delete('-a') || args.delete('--all')
end
print_and_save(meths, stacks) click to toggle source
query_methods(meths, query) click to toggle source
# File lib/one9/report.rb, line 82
def query_methods(meths, query)
  query ? meths.select {|e| e.name[/#{query}/] } : meths
end
save(meths, stacks) click to toggle source
# File lib/one9/report.rb, line 100
def save(meths, stacks)
  stacks_copy = stacks.inject({}) {|h,(k,v)| h.merge!(k => v) }
  File.open(marshal_file, 'wb') {|f| f.write Marshal.dump([{}, stacks_copy]) }
rescue Exception => err
  warn "one9: Error while saving report:\n" +
  "#{err.class}: #{err.message}\n    #{err.backtrace.slice(0,10).join("\n    ")}"
end
setup() click to toggle source
# File lib/one9/report.rb, line 75
def setup
  report_exists!
  meths = One9.load_methods
  headers, stacks = File.open(marshal_file, 'rb'){|f| Marshal.load(f.read ) }
  [meths, stacks]
end
table(*args) click to toggle source
# File lib/one9/report.rb, line 71
def table(*args)
  puts Hirb::Helpers::AutoTable.render(*args)
end