Sha256: 14a74d0deb8cec78a5487cc3ffa86f9d9f18bba630a20d7d035f97fabae2d7e0

Contents?: true

Size: 1.11 KB

Versions: 59

Compression:

Stored size: 1.11 KB

Contents

module Spork::GemHelpers
  extend self

  class GemPath
    attr_reader :name, :version, :path, :version_numbers
    include Comparable
    def initialize(p)
      @path = p
      @name, @version = File.basename(p).scan(/^(.+?)-([^-]+)$/).flatten
      @version_numbers = @version.split(/[^0-9]+/).map(&:to_i)
    end

    def <=>(other)
      raise "Not comparable gem paths ('#{name}' is not '#{other.name}')" unless name == other.name
      @version_numbers <=> other.version_numbers
    end
  end

  def latest_load_paths
    case
    when defined?(Bundler)
      $LOAD_PATH.map { |p| File.expand_path(p) }.uniq
    when Gem.respond_to?(:path)
      Dir["{#{Gem.path.join(',')}}" + "/gems/*"].inject({}) do |h,f|
        gem_path = GemPath.new(f)
        if h[gem_path.name]
          h[gem_path.name] = gem_path if gem_path > h[gem_path.name]
        else
          h[gem_path.name] = gem_path
        end
        h
      end.values.map { |gem_path| File.expand_path("lib", gem_path.path) }.sort.uniq
    else
      STDERR.puts "No mechanism available to scan for other gems implementing spork hooks. "
      []
    end
  end
end

Version data entries

59 entries across 59 versions & 3 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.7.4 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.7.3 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.7.2 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.7.1 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.7.0 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.9 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.8 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.7 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.6 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.5 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.4 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.3 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.2 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.1 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.6.0 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.5.17 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.5.16 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.5.15 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb
classiccms-0.5.14 vendor/bundle/gems/spork-0.9.0/lib/spork/gem_helpers.rb