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
# File lib/one9/report.rb, line 37 def print(meths, stacks) FileUtils.touch lock_file if File.exists? One9.dir Hirb.enable results = ReportMethod.create(meths, stacks) results = results.select {|e| e.count > 0 } puts "\n** One9 Report **" return puts('No 1.9 changes found') if results.size.zero? table results, :fields => [:name, :count, :message, :type, :stacks], :headers => {:name => 'method', :stacks => 'lines'}, :filters => { :stacks => [:join, ','] } end
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
# File lib/one9/report.rb, line 94 def print_and_save(meths, stacks) return if File.exists? lock_file print(meths, stacks) save(meths, stacks) end
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