SILENT KILLERPanel

Current Path: > > opt > alt > ruby34 > > share > rubygems > rubygems


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //opt/alt/ruby34//share/rubygems/rubygems

NameTypeSizeLast ModifiedActions
commands Directory - -
core_ext Directory - -
defaults Directory - -
ext Directory - -
gemcutter_utilities Directory - -
package Directory - -
request Directory - -
request_set Directory - -
resolver Directory - -
safe_marshal Directory - -
security Directory - -
source Directory - -
ssl_certs Directory - -
util Directory - -
vendor Directory - -
available_set.rb File 3075 bytes May 29 2025 13:39:48.
basic_specification.rb File 8329 bytes May 29 2025 13:39:49.
bundler_version_finder.rb File 2009 bytes May 29 2025 13:39:49.
ci_detector.rb File 3801 bytes May 29 2025 13:39:48.
command.rb File 16179 bytes May 29 2025 13:39:49.
command_manager.rb File 5778 bytes May 29 2025 13:39:49.
compatibility.rb File 1022 bytes May 29 2025 13:39:48.
config_file.rb File 16700 bytes May 29 2025 13:39:49.
defaults.rb File 7558 bytes May 29 2025 13:39:49.
dependency.rb File 8652 bytes May 29 2025 13:39:49.
dependency_installer.rb File 10144 bytes May 29 2025 13:39:49.
dependency_list.rb File 5684 bytes May 29 2025 13:39:49.
deprecate.rb File 5159 bytes May 29 2025 13:39:49.
doctor.rb File 3204 bytes May 29 2025 13:39:48.
errors.rb File 4635 bytes May 29 2025 13:39:48.
exceptions.rb File 7298 bytes May 29 2025 13:39:49.
ext.rb File 498 bytes May 29 2025 13:39:49.
gem_runner.rb File 2187 bytes May 29 2025 13:39:49.
gemcutter_utilities.rb File 11515 bytes May 29 2025 13:39:48.
gemspec_helpers.rb File 394 bytes May 29 2025 13:39:49.
install_default_message.rb File 349 bytes May 29 2025 13:39:49.
install_message.rb File 323 bytes May 29 2025 13:39:49.
install_update_options.rb File 6722 bytes May 29 2025 13:39:48.
installer.rb File 28403 bytes May 29 2025 13:39:49.
installer_uninstaller_utils.rb File 771 bytes May 29 2025 13:39:48.
local_remote_options.rb File 3675 bytes May 29 2025 13:39:48.
name_tuple.rb File 2442 bytes May 29 2025 13:39:49.
openssl.rb File 125 bytes May 29 2025 13:39:49.
package.rb File 19281 bytes May 29 2025 13:39:48.
package_task.rb File 3879 bytes May 29 2025 13:39:48.
path_support.rb File 1816 bytes May 29 2025 13:39:49.
platform.rb File 8608 bytes May 29 2025 13:39:49.
psych_tree.rb File 855 bytes May 29 2025 13:39:49.
query_utils.rb File 8703 bytes May 29 2025 13:39:48.
rdoc.rb File 660 bytes May 29 2025 13:39:49.
remote_fetcher.rb File 9604 bytes May 29 2025 13:39:48.
request.rb File 8910 bytes May 29 2025 13:39:49.
request_set.rb File 11558 bytes May 29 2025 13:39:49.
requirement.rb File 7298 bytes May 29 2025 13:39:48.
resolver.rb File 9659 bytes May 29 2025 13:39:49.
s3_uri_signer.rb File 6106 bytes May 29 2025 13:39:49.
safe_marshal.rb File 1969 bytes May 29 2025 13:39:49.
safe_yaml.rb File 1067 bytes May 29 2025 13:39:49.
security.rb File 22214 bytes May 29 2025 13:39:49.
security_option.rb File 1084 bytes May 29 2025 13:39:49.
shellwords.rb File 66 bytes May 29 2025 13:39:49.
source.rb File 5922 bytes May 29 2025 13:39:49.
source_list.rb File 2482 bytes May 29 2025 13:39:49.
spec_fetcher.rb File 7868 bytes May 29 2025 13:39:49.
specification.rb File 70688 bytes May 29 2025 13:39:49.
specification_policy.rb File 15964 bytes May 29 2025 13:39:48.
specification_record.rb File 5332 bytes May 29 2025 13:39:48.
stub_specification.rb File 5078 bytes May 29 2025 13:39:48.
target_rbconfig.rb File 1273 bytes May 29 2025 13:39:49.
text.rb File 2114 bytes May 29 2025 13:39:49.
uninstaller.rb File 11179 bytes May 29 2025 13:39:49.
unknown_command_spell_checker.rb File 411 bytes May 29 2025 13:39:49.
update_suggestion.rb File 1899 bytes May 29 2025 13:39:49.
uri.rb File 2436 bytes May 29 2025 13:39:48.
uri_formatter.rb File 784 bytes May 29 2025 13:39:48.
user_interaction.rb File 13417 bytes May 29 2025 13:39:48.
util.rb File 2519 bytes May 29 2025 13:39:48.
validator.rb File 3717 bytes May 29 2025 13:39:48.
vendored_molinillo.rb File 81 bytes May 29 2025 13:39:49.
vendored_net_http.rb File 233 bytes May 29 2025 13:39:48.
vendored_optparse.rb File 79 bytes May 29 2025 13:39:49.
vendored_securerandom.rb File 87 bytes May 29 2025 13:39:48.
vendored_timeout.rb File 228 bytes May 29 2025 13:39:48.
vendored_tsort.rb File 73 bytes May 29 2025 13:39:49.
version.rb File 13668 bytes May 29 2025 13:39:49.
version_option.rb File 2227 bytes May 29 2025 13:39:48.
yaml_serializer.rb File 2474 bytes May 29 2025 13:39:48.

Reading File: //opt/alt/ruby34//share/rubygems/rubygems/specification_record.rb

# frozen_string_literal: true

module Gem
  class SpecificationRecord
    def self.dirs_from(paths)
      paths.map do |path|
        File.join(path, "specifications")
      end
    end

    def self.from_path(path)
      new(dirs_from([path]))
    end

    def initialize(dirs)
      @all = nil
      @stubs = nil
      @stubs_by_name = {}
      @spec_with_requirable_file = {}
      @active_stub_with_requirable_file = {}

      @dirs = dirs
    end

    # Sentinel object to represent "not found" stubs
    NOT_FOUND = Struct.new(:to_spec, :this).new
    private_constant :NOT_FOUND

    ##
    # Returns the list of all specifications in the record

    def all
      @all ||= stubs.map(&:to_spec)
    end

    ##
    # Returns a Gem::StubSpecification for every specification in the record

    def stubs
      @stubs ||= begin
        pattern = "*.gemspec"
        stubs = stubs_for_pattern(pattern, false)

        @stubs_by_name = stubs.select {|s| Gem::Platform.match_spec? s }.group_by(&:name)
        stubs
      end
    end

    ##
    # Returns a Gem::StubSpecification for every specification in the record
    # named +name+ only returns stubs that match Gem.platforms

    def stubs_for(name)
      if @stubs
        @stubs_by_name[name] || []
      else
        @stubs_by_name[name] ||= stubs_for_pattern("#{name}-*.gemspec").select do |s|
          s.name == name
        end
      end
    end

    ##
    # Finds stub specifications matching a pattern in the record, optionally
    # filtering out specs not matching the current platform

    def stubs_for_pattern(pattern, match_platform = true)
      installed_stubs = installed_stubs(pattern)
      installed_stubs.select! {|s| Gem::Platform.match_spec? s } if match_platform
      stubs = installed_stubs + Gem::Specification.default_stubs(pattern)
      Gem::Specification._resort!(stubs)
      stubs
    end

    ##
    # Adds +spec+ to the the record, keeping the collection properly sorted.

    def add_spec(spec)
      return if all.include? spec

      all << spec
      stubs << spec
      (@stubs_by_name[spec.name] ||= []) << spec

      Gem::Specification._resort!(@stubs_by_name[spec.name])
      Gem::Specification._resort!(stubs)
    end

    ##
    # Removes +spec+ from the record.

    def remove_spec(spec)
      all.delete spec.to_spec
      stubs.delete spec
      (@stubs_by_name[spec.name] || []).delete spec
    end

    ##
    # Sets the specs known by the record to +specs+.

    def all=(specs)
      @stubs_by_name = specs.group_by(&:name)
      @all = @stubs = specs
    end

    ##
    # Return full names of all specs in the record in sorted order.

    def all_names
      all.map(&:full_name)
    end

    include Enumerable

    ##
    # Enumerate every known spec.

    def each
      return enum_for(:each) unless block_given?

      all.each do |x|
        yield x
      end
    end

    ##
    # Returns every spec in the record that matches +name+ and optional +requirements+.

    def find_all_by_name(name, *requirements)
      req = Gem::Requirement.create(*requirements)
      env_req = Gem.env_requirement(name)

      matches = stubs_for(name).find_all do |spec|
        req.satisfied_by?(spec.version) && env_req.satisfied_by?(spec.version)
      end.map(&:to_spec)

      if name == "bundler" && !req.specific?
        require_relative "bundler_version_finder"
        Gem::BundlerVersionFinder.prioritize!(matches)
      end

      matches
    end

    ##
    # Return the best specification in the record that contains the file matching +path+.

    def find_by_path(path)
      path = path.dup.freeze
      spec = @spec_with_requirable_file[path] ||= stubs.find do |s|
        s.contains_requirable_file? path
      end || NOT_FOUND

      spec.to_spec
    end

    ##
    # Return the best specification in the record that contains the file
    # matching +path+ amongst the specs that are not activated.

    def find_inactive_by_path(path)
      stub = stubs.find do |s|
        next if s.activated?
        s.contains_requirable_file? path
      end
      stub&.to_spec
    end

    ##
    # Return the best specification in the record that contains the file
    # matching +path+, among those already activated.

    def find_active_stub_by_path(path)
      stub = @active_stub_with_requirable_file[path] ||= stubs.find do |s|
        s.activated? && s.contains_requirable_file?(path)
      end || NOT_FOUND

      stub.this
    end

    ##
    # Return the latest specs in the record, optionally including prerelease
    # specs if +prerelease+ is true.

    def latest_specs(prerelease)
      Gem::Specification._latest_specs stubs, prerelease
    end

    ##
    # Return the latest installed spec in the record for gem +name+.

    def latest_spec_for(name)
      latest_specs(true).find {|installed_spec| installed_spec.name == name }
    end

    private

    def installed_stubs(pattern)
      map_stubs(pattern) do |path, base_dir, gems_dir|
        Gem::StubSpecification.gemspec_stub(path, base_dir, gems_dir)
      end
    end

    def map_stubs(pattern)
      @dirs.flat_map do |dir|
        base_dir = File.dirname dir
        gems_dir = File.join base_dir, "gems"
        Gem::Specification.gemspec_stubs_in(dir, pattern) {|path| yield path, base_dir, gems_dir }
      end
    end
  end
end

SILENT KILLER Tool