Sha256: eed90e6edf92a2ad3bde6bb199a7eed90058c0fe29c4c618e8c15f9aca03a3cc

Contents?: true

Size: 1.11 KB

Versions: 8

Compression:

Stored size: 1.11 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

      private

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

      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

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
zeus-edge-0.12.1 lib/zeus/load_tracking.rb
zeus-0.12.0 lib/zeus/load_tracking.rb
zeus-0.12.0.pre2 lib/zeus/load_tracking.rb
zeus-0.12.0.pre lib/zeus/load_tracking.rb
zeus-0.11.2 lib/zeus/load_tracking.rb
zeus-0.11.1 lib/zeus/load_tracking.rb
zeus-0.11.0 lib/zeus/load_tracking.rb
zeus-0.10.2 lib/zeus/load_tracking.rb