module RailsWithFirePHP::Common
Constants
- MAX_LENGTH
- RWFP_INIT_HEADERS
FirePHP header template
- RWFP_INIT_HEADERS_DUMP
- RWFP_INIT_HEADERS_LOG
- RWFP_KINDS
- RWFP_LEGACY_WARNING
Public Instance Methods
_rwfp_build_headers(msg,kind='LOG',label=nil)
click to toggle source
build header
# File lib/core/rails_with_firephp.rb, line 23 def _rwfp_build_headers msg,kind='LOG',label=nil logheaders = [] t_pref,g_kind = kind == 'DUMP' ? [ 2, 'DUMP' ] : [ 1, 'LOG' ] file, line, function = caller[2].split ':' msg_meta = { 'Type' => kind, 'File' => file, 'Line' => line } msg_meta['Label'] = label ? label + '(' + msg.class.to_s + ')' : '(' + msg.class.to_s + ')' #@fire_msg_index = 0 unless instance_variables.member? '@fire_msg_index' @fire_msg_index = 0 if not @fire_msg_index msg = _rwfp_mask_ruby_types( Marshal.load(Marshal.dump(msg)) ) if ( @rwfp_options.has_key? :mask_ruby_types && :mask_ruby_types ) msg_u = toUnicode msg.to_json label_u = toUnicode label.to_json msg_meta_u= toUnicode msg_meta.to_json msg = kind == 'DUMP' ? "{#{label_u}:#{msg_u}}" : "[#{msg_meta_u},#{msg_u}]" (msg.gsub /.{#{MAX_LENGTH}}/ do |m| "#{m}\n" end).split( "\n" ).each_with_index do |msg_part,ind| @fire_msg_index += 1 logheaders << [ "X-Wf-1-#{t_pref}-1-#{@fire_msg_index}", "#{msg.size if ind == 0}|#{msg_part}|#{'\\' if ind < msg.size/MAX_LENGTH}" ] end unless instance_variables.member? "@rwfp_inited_#{g_kind.downcase}" RailsWithFirePHP::Common::const_get( "RWFP_INIT_HEADERS_#{g_kind}" ).each_pair { |k,v| logheaders << [ k, v ] } instance_variable_set( "@rwfp_inited_#{g_kind.downcase}", true ) end return logheaders end
_rwfp_initialize_request(ua)
click to toggle source
# File lib/core/rails_with_firephp.rb, line 52 def _rwfp_initialize_request ua @firephp_version = ua.match( /FirePHP\/(\d+)\.(\d+)\.([\db.]+)/) @firephp_version = @firephp_version[1,3].map {|i| i.to_i} if @firephp_version firephp_01_version = ( @firephp_version || [0,2] )[0,2].join('.').to_f<0.2 @firephpruby_skip = @firephp_version == nil || firephp_01_version logheaders = firephp_01_version ? RWFP_LEGACY_WARNING : RWFP_INIT_HEADERS logheaders['X-FirePHP-RendererURL'] = @rwfp_options[:renderer_url] if @rwfp_options.has_key? :renderer_url logheaders['X-FirePHP-ProcessorURL'] = @rwfp_options[:processor_url] if @rwfp_options.has_key? :processor_url return logheaders end
_rwfp_mask_ruby_types(data, skip=true)
click to toggle source
# File lib/core/rails_with_firephp.rb, line 70 def _rwfp_mask_ruby_types data, skip=true # skip masking if not hash key #rwfp_internal_log data.class.to_s if data.is_a? String return data elsif data.is_a? Integer return "__INT__#{data.to_s}__INT__" elsif data.is_a? Numeric return skip ? data : "__NUM__#{data.to_s}__NUM__" elsif data.is_a? TrueClass or data.is_a? FalseClass return skip ? data : "__BOOL__#{data.to_s}__BOOL__" elsif data.nil? return skip ? data : '__NIL__nil__NIL__' elsif data.is_a? Symbol return "__SYM__:#{data.to_s}__SYM__" elsif data.is_a? Array #rwfp_internal_log 'wird' return data.map { |v| _rwfp_mask_ruby_types v } elsif data.is_a? Hash k_types = [ Symbol, Fixnum, Bignum, Float, Range, TrueClass, FalseClass, NilClass ] j_types = [ Array, Hash ] data.each { |k,v| data[k] = _rwfp_mask_ruby_types v } keys_to_mask = data.keys.select { |k| k_types.include? k.class } keys_to_mask.each { |k| nk = _rwfp_mask_ruby_types k,false; data[nk] = data[k]; data.delete k } keys_to_jsonize = data.keys.select { |k| j_types.include? k.class } keys_to_jsonize.each do |k| nk = _rwfp_mask_ruby_types( k,false ).to_json data["__JSON__#{nk}__JSON__"] = data[k] data.delete k end return data elsif data.is_a? Range return "__RNG__#{data.to_s}__RNG__" end rwfp_internal_log 'shit happens - class: ' + data.class.to_s return data end
_rwfp_set_options(opts)
click to toggle source
# File lib/core/rails_with_firephp.rb, line 47 def _rwfp_set_options opts @rwfp_options = {} unless instance_variables.member? '@rwfp_options' @rwfp_options.merge! opts end
rwfp_internal_log(msg)
click to toggle source
# File lib/core/rails_with_firephp.rb, line 63 def rwfp_internal_log msg @fire_msg_index = 0 unless instance_variables.member? '@fire_msg_index' @fire_msg_index += 1 msg = "[#{{:Type=>'LOG',:Label=>'____________________________ internal message'}.to_json},#{msg.to_json}]" puts "X-Wf-1-1-1-#{@fire_msg_index}: #{msg.size}|#{msg}|" end
toUnicode(obj)
click to toggle source
from utf-8 to unicode
# File lib/core/rails_with_firephp.rb, line 18 def toUnicode obj obj.unpack('U*').map {|i| i>=592 ? ("\\u" + i.to_s(16).rjust(4, '0')) : [i].pack('U') }.join end