module LogMethods
Public Instance Methods
calling_lines()
click to toggle source
# File lib/sprockets_fs/log.rb, line 5 def calling_lines raise 'foo' rescue => exp base = test = other = nil dir = File.expand_path(File.dirname(__FILE__) + "/../..") File.append "traces.txt", exp.backtrace.join("\n") + "\n\n\n" exp.backtrace[3..-1].each do |line| if line =~ /rspec-core/ # do nothing elsif line.starts_with?(dir) short = line.gsub("#{dir}/","") if short.starts_with? "lib" base ||= short elsif short.starts_with? "spec" test ||= short else raise "unknown #{line} | #{short}" end elsif line =~ /fattr/ || line.starts_with?("(eval):") # do nothing else other ||= line end if base && test && other test = "#{test} #{get_spec_name(test)}" return [base,test,other] end end return [base,test,other] if base && test raise 'end' end
get_fattr_name(desc)
click to toggle source
# File lib/sprockets_fs/log.rb, line 50 def get_fattr_name(desc) file,line,junk = *desc.split(" ").first.split(":") lines = File.read(file).split("\n")[0...(line.to_i)].reverse lines.each do |line| if line =~ /fattr\(:([a-z0-9_]+)\)\s+do/ return $1 end end raise 'no fattr name' end
get_spec_name(desc)
click to toggle source
# File lib/sprockets_fs/log.rb, line 39 def get_spec_name(desc) file,line,junk = *desc.split(" ").first.split(":") lines = File.read(file).split("\n")[0...(line.to_i)].reverse lines.each do |line| if line =~ /it\s+['"]([a-z _0-9]+)['"]\s+do/ return $1 end end raise 'no spec name' end
log_special(obj) { || ... }
click to toggle source
# File lib/sprockets_fs/log.rb, line 63 def log_special(obj,&b) dt = Time.now lines = calling_lines line = lines.join(" | ") raise "bad line, cant find calling function #{lines.first}" unless lines.first =~ /in `([a-z0-9_ <>:]+)'/i caller = $1 if caller.starts_with?("block in <") caller = get_fattr_name(lines.first) elsif caller.starts_with?("block in") raise "bad line, cant find calling function #{caller}" unless caller =~ /block in ([a-z0-9_!]+)/i caller = $1 end library = nil if lines.last if lines.last =~ /in `([a-z0-9_ <>:]+)'/i library = $1 end end res = nil message = obj.inspect if block_given? res = yield message += " RES: #{res.inspect}" end make :dt => dt, :base_line => lines.first, :spec_line => lines[1], :spec => get_spec_name(lines[1]), :message => message, :caller => caller, :library => library, :library_line => lines.last File.append "log_special.log","#{dt} from #{line}\n#{obj.inspect}\n\n" res end