Sha256: 3dd80a8a2c48af3cd7e4cabe5451b9702a3621e422182a83ff6cc46a94b7abc7

Contents?: true

Size: 1.24 KB

Versions: 8

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true

require "rbconfig"

##
# A TargetConfig is a wrapper around an RbConfig object that provides a
# consistent interface for querying configuration for *deployment target
# platform*, where the gem being installed is intended to run on.
#
# The TargetConfig is typically created from the RbConfig of the running Ruby
# process, but can also be created from an RbConfig file on disk for cross-
# compiling gems.

class Gem::TargetRbConfig
  attr_reader :path

  def initialize(rbconfig, path)
    @rbconfig = rbconfig
    @path = path
  end

  ##
  # Creates a TargetRbConfig for the platform that RubyGems is running on.

  def self.for_running_ruby
    new(::RbConfig, nil)
  end

  ##
  # Creates a TargetRbConfig from the RbConfig file at the given path.
  # Typically used for cross-compiling gems.

  def self.from_path(rbconfig_path)
    namespace = Module.new do |m|
      # Load the rbconfig.rb file within a new anonymous module to avoid
      # conflicts with the rbconfig for the running platform.
      Kernel.load rbconfig_path, m
    end
    rbconfig = namespace.const_get(:RbConfig)

    new(rbconfig, rbconfig_path)
  end

  ##
  # Queries the configuration for the given key.

  def [](key)
    @rbconfig::CONFIG[key]
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
malicious-1.1 lib/rubygems/target_rbconfig.rb
rubygems-update-3.6.6 lib/rubygems/target_rbconfig.rb
rubygems-update-3.6.5 lib/rubygems/target_rbconfig.rb
rubygems-update-3.6.4 lib/rubygems/target_rbconfig.rb
rubygems-update-3.6.3 lib/rubygems/target_rbconfig.rb
rubygems-update-3.6.2 lib/rubygems/target_rbconfig.rb
rubygems-update-3.6.1 lib/rubygems/target_rbconfig.rb
rubygems-update-3.6.0 lib/rubygems/target_rbconfig.rb