Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
This paste will be private.
#!/usr/bin/env ruby class Parameters attr_accessor :line def initialize(line) self.line = line.match(/^ Parameters: \{(.*)\}$/)[1] end def search_parameter(p) begin self.line.match(Regexp.new("\"#{p}\"=>\"(.*)\"\"?"))[1].split(", \"")[0].gsub("\"","") rescue nil end end def method_missing(method) search_parameter(method.to_s) end end # Caso seja digitada uma data, como 2008-07-05, por exemplo, ele localizará dados com esta data. # Caso contrário, ele irá procurar dados do dia anterior. ARGV[0] ||= Time.mktime(Time.now.year,Time.now.month,Time.now.day-1).strftime("%Y-%m-%d") re = Regexp.new '^Processing SearchsController#research \(for (.*) at ' << ARGV[0] << ' (.*)\).*$' log = File.open("log/production.log").readlines.select { |l| l =~ /research/ } log.each_with_index do |line,index| date = line.match(re) if !date.nil? and date.size > 1 puts "\n#{date[2]}" params = Parameters.new(log[index+1]) puts "What: #{params.what}" puts "Where: #{params.where}" puts "Raio: #{params.raio}" end end
From the Design Piracy series on my blog: