Sha256: 062a8e6a738fe2ce639879f747c31ed79d43e5891d71b736d3b455137b8da404

Contents?: true

Size: 1.33 KB

Versions: 6

Compression:

Stored size: 1.33 KB

Contents

module Zeus
  class LoadTracking
    class << self

      def features_loaded_by(&block)
        old_features = all_features()
        yield
        new_features = all_features() - old_features
        return new_features
      end

      def add_feature(file)
        path = if File.exist?(File.expand_path(file))
          File.expand_path(file)
        else
          find_in_load_path(file)
        end
        add_extra_feature(path) if path
      end

      def all_features
        untracked = defined?($untracked_features) ? $untracked_features : []
        $LOADED_FEATURES + untracked
      end

      private

      def add_extra_feature(path)
        $untracked_features ||= []
        $untracked_features << path
      end

      def find_in_load_path(file)
        $LOAD_PATH.map { |path| "#{path}/#{file}" }.detect{ |file| File.exist? file }
      end
    end
  end
end

module Kernel

  def load(file, *a)
    Kernel.load(file, *a)
  end

  class << self
    alias_method :__load_without_zeus, :load
    def load(file, *a)
      Zeus::LoadTracking.add_feature(file)
      __load_without_zeus(file, *a)
    end
  end
end

require 'yaml'
module YAML
  class << self
    alias_method :__load_file_without_zeus, :load_file
    def load_file(file, *a)
      Zeus::LoadTracking.add_feature(file)
      __load_file_without_zeus(file, *a)
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
zeus-0.15.4 lib/zeus/load_tracking.rb
zeus-0.15.3 lib/zeus/load_tracking.rb
zeus-0.15.2 lib/zeus/load_tracking.rb
zeus-0.15.1 lib/zeus/load_tracking.rb
zeus-0.15.0 lib/zeus/load_tracking.rb
zeus-justinf-0.13.5 lib/zeus/load_tracking.rb