activate (Gem)

    # File lib/rubygems.rb, line 301
        def activate(gem, autorequire, *version_requirements)
          if version_requirements.empty? then
            version_requirements = Gem::Requirement.default
          end

          unless gem.respond_to?(:name) && gem.respond_to?(:version_requirements)
            gem = Gem::Dependency.new(gem, version_requirements)
          end

          matches = Gem.source_index.find_name(gem.name, gem.version_requirements)
          report_activate_error(gem) if matches.empty?

          if @loaded_specs[gem.name]
            # This gem is already loaded.  If the currently loaded gem is
            # not in the list of candidate gems, then we have a version
            # conflict.
            existing_spec = @loaded_specs[gem.name]
            if ! matches.any? { |spec| spec.version == existing_spec.version }
              fail Gem::Exception, "can't activate #{gem}, already activated #{existing_spec.full_name}]"
            end
            return false
          end

          # new load
          spec = matches.last
          if spec.loaded?
            return false unless autorequire
            result = spec.autorequire ? require(spec.autorequire) : false
            return result || false
          end

          spec.loaded = true
          @loaded_specs[spec.name] = spec

          # Load dependent gems first
          spec.dependencies.each do |dep_gem|
            activate(dep_gem, autorequire)
          end

          # bin directory must come before library directories
          spec.require_paths.unshift spec.bindir if spec.bindir

          require_paths = spec.require_paths.map do |path|
            File.join spec.full_gem_path, path
          end

          sitelibdir = ConfigMap[:sitelibdir]

          # gem directories must come after -I and ENV['RUBYLIB']
          $:.insert($:.index(sitelibdir), *require_paths)

          # Now autorequire
          if autorequire && spec.autorequire then # DEPRECATED
            Array(spec.autorequire).each do |a_lib|
              require a_lib
            end
          end

          return true
        end