Sha256: fa70f5179b0260051d24be1ce0adeccf0de847c60cc3e2d96fac569dacae9b67

Contents?: true

Size: 1.5 KB

Versions: 22

Compression:

Stored size: 1.5 KB

Contents

##
# Gem::PathSupport facilitates the GEM_HOME and GEM_PATH environment settings
# to the rest of RubyGems.
#
class Gem::PathSupport
  ##
  # The default system path for managing Gems.
  attr_reader :home

  ##
  # Array of paths to search for Gems.
  attr_reader :path

  ##
  #
  # Constructor. Takes a single argument which is to be treated like a
  # hashtable, or defaults to ENV, the system environment.
  #
  def initialize(env=ENV)
    @env = env

    # note 'env' vs 'ENV'...
    @home     = env["GEM_HOME"] || ENV["GEM_HOME"] || Gem.default_dir

    if File::ALT_SEPARATOR then
      @home   = @home.gsub(File::ALT_SEPARATOR, File::SEPARATOR)
    end

    self.path = env["GEM_PATH"] || ENV["GEM_PATH"]
  end

  private

  ##
  # Set the Gem home directory (as reported by Gem.dir).

  def home=(home)
    @home = home.to_s
  end

  ##
  # Set the Gem search path (as reported by Gem.path).

  def path=(gpaths)
    gem_path = [@home]

    # FIX: I can't tell wtf this is doing.
    gpaths ||= (ENV['GEM_PATH'] || "").empty? ? nil : ENV["GEM_PATH"]

    if gpaths then
      if gpaths.kind_of?(Array) then
        gem_path.push(*gpaths)
      else
        gem_path.push(*gpaths.split(File::PATH_SEPARATOR))
      end

      if File::ALT_SEPARATOR then
        gem_path.map! do |this_path|
          this_path.gsub File::ALT_SEPARATOR, File::SEPARATOR
        end
      end
    else
      gem_path.push(*Gem.default_path)

      gem_path << APPLE_GEM_HOME if defined?(APPLE_GEM_HOME)
    end

    @path = gem_path.uniq
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
rubygems-update-1.8.11 lib/rubygems/path_support.rb
rubygems-update-1.8.10 lib/rubygems/path_support.rb