rshade 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +4 -0
- data/Gemfile.lock +23 -22
- data/README.md +74 -19
- data/lib/rshade/binding_serializer.rb +35 -0
- data/lib/rshade/config/store.rb +38 -0
- data/lib/rshade/config.rb +71 -0
- data/lib/rshade/core_extensions/object/reveal.rb +8 -0
- data/lib/rshade/event.rb +39 -14
- data/lib/rshade/event_observer.rb +45 -0
- data/lib/rshade/event_processor.rb +35 -0
- data/lib/rshade/event_tree.rb +75 -0
- data/lib/rshade/filter/abstract_filter.rb +26 -0
- data/lib/rshade/filter/default.rb +28 -0
- data/lib/rshade/filter/exclude_path_filter.rb +24 -0
- data/lib/rshade/filter/filter_builder.rb +28 -0
- data/lib/rshade/filter/filter_composition.rb +57 -0
- data/lib/rshade/filter/include_path_filter.rb +43 -0
- data/lib/rshade/filter/variable_filter.rb +33 -0
- data/lib/rshade/formatter/file.rb +6 -6
- data/lib/rshade/formatter/html.rb +9 -7
- data/lib/rshade/formatter/json.rb +14 -15
- data/lib/rshade/formatter/stdout.rb +3 -3
- data/lib/rshade/formatter/string.rb +17 -11
- data/lib/rshade/trace.rb +19 -39
- data/lib/rshade/trace_observable.rb +40 -0
- data/lib/rshade/version.rb +1 -1
- data/lib/rshade.rb +18 -20
- data/rshade.gemspec +1 -1
- metadata +22 -13
- data/lib/rshade/base.rb +0 -13
- data/lib/rshade/configuration.rb +0 -43
- data/lib/rshade/event_serializer.rb +0 -41
- data/lib/rshade/event_store.rb +0 -23
- data/lib/rshade/filter/app_filter.rb +0 -20
- data/lib/rshade/storage.rb +0 -4
| @@ -1,41 +0,0 @@ | |
| 1 | 
            -
            require 'date'
         | 
| 2 | 
            -
            module RShade
         | 
| 3 | 
            -
              class EventSerializer < Base
         | 
| 4 | 
            -
                attr_reader :evt, :level
         | 
| 5 | 
            -
                SERIALIZE_CLASSES = [NilClass, TrueClass, FalseClass, Numeric, Time, Date, String, Symbol, Array]
         | 
| 6 | 
            -
                def initialize(evt, level)
         | 
| 7 | 
            -
                  @evt = evt
         | 
| 8 | 
            -
                  @level = level
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                def call
         | 
| 12 | 
            -
                  { level: @level, path: evt.path, lineno: evt.lineno, klass: evt.defined_class, method_name: evt.method_id, vars: process_locals(evt) }
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def process_locals(evt)
         | 
| 16 | 
            -
                  vars = {}
         | 
| 17 | 
            -
                  evt.binding.local_variables.each do |var|
         | 
| 18 | 
            -
                    local_var = evt.binding.local_variable_get var
         | 
| 19 | 
            -
                    if SERIALIZE_CLASSES.any? { |klass| local_var.is_a?(klass) }
         | 
| 20 | 
            -
                      vars[var] = local_var
         | 
| 21 | 
            -
                    elsif local_var.is_a?(Hash)
         | 
| 22 | 
            -
                      vars[var] = shallow_copy_of_hash(local_var)
         | 
| 23 | 
            -
                    else
         | 
| 24 | 
            -
                      class_name =  local_var.is_a?(Class) ? local_var.to_s : local_var.class.to_s
         | 
| 25 | 
            -
                      vars[var] = "FILTERED[#{class_name}]"
         | 
| 26 | 
            -
                    end
         | 
| 27 | 
            -
                  end
         | 
| 28 | 
            -
                  vars
         | 
| 29 | 
            -
                end
         | 
| 30 | 
            -
             | 
| 31 | 
            -
                #TODO: work on more efficient way to serialize hash
         | 
| 32 | 
            -
                def shallow_copy_of_hash(hash)
         | 
| 33 | 
            -
                  {}.tap do |new_hash|
         | 
| 34 | 
            -
                    hash.each do |k,v|
         | 
| 35 | 
            -
                      new_hash[k] = v.to_s
         | 
| 36 | 
            -
                    end
         | 
| 37 | 
            -
                    new_hash
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
              end
         | 
| 41 | 
            -
            end
         | 
    
        data/lib/rshade/event_store.rb
    DELETED
    
    | @@ -1,23 +0,0 @@ | |
| 1 | 
            -
            module RShade
         | 
| 2 | 
            -
              # nodoc
         | 
| 3 | 
            -
              class EventStore
         | 
| 4 | 
            -
                attr_reader :events
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                def initialize
         | 
| 7 | 
            -
                  @events = []
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                def <<(event)
         | 
| 11 | 
            -
                  events << event
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                def iterate(&block)
         | 
| 15 | 
            -
                  pos_map = {}
         | 
| 16 | 
            -
                  @events.map {|item| item.level }.uniq.sort.each_with_index { |item, index| pos_map[item] = index}
         | 
| 17 | 
            -
                  @events.uniq{|item| [item.level, "#{item.klass}##{item.method_name}"]}.sort_by { |item| item.depth }.each do |item|
         | 
| 18 | 
            -
                    item.depth = pos_map[item.level]
         | 
| 19 | 
            -
                    yield(item, item.depth)
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
            end
         | 
| @@ -1,20 +0,0 @@ | |
| 1 | 
            -
            module RShade
         | 
| 2 | 
            -
              module Filter
         | 
| 3 | 
            -
                class AppFilter < ::RShade::Base
         | 
| 4 | 
            -
                  attr_reader :data
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                  def initialize(data)
         | 
| 7 | 
            -
                    @data = data
         | 
| 8 | 
            -
                  end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  def call
         | 
| 11 | 
            -
                    valid?(data[:path])
         | 
| 12 | 
            -
                  end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                  def valid?(path)
         | 
| 15 | 
            -
                    return true if RShade.config.track_gems.any? { |item| path.include? item }
         | 
| 16 | 
            -
                    RShade.config.excluded_paths.none? { |item| path.include? item }
         | 
| 17 | 
            -
                  end
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
              end
         | 
| 20 | 
            -
            end
         | 
    
        data/lib/rshade/storage.rb
    DELETED