模块 RbConfig

存储 Ruby 解释器在构建时的配置的模块。

此文件是在构建 Ruby 时由 mkconfig.rb 创建的。它包含 Ruby 的构建信息,例如 mkmf 用于构建兼容的原生扩展。对该文件所做的任何更改将在下次构建 Ruby 时丢失。

常量

CONFIG

存储的哈希配置。

DESTDIR

DESTDIR 在 make install 时。

MAKEFILE_CONFIG

几乎与 CONFIG 相同。 MAKEFILE_CONFIG 具有其他变量引用,如下所示。

MAKEFILE_CONFIG["bindir"] = "$(exec_prefix)/bin"

此常量的值用于创建 Makefile。

require 'rbconfig'

print <<-END_OF_MAKEFILE
prefix = #{RbConfig::MAKEFILE_CONFIG['prefix']}
exec_prefix = #{RbConfig::MAKEFILE_CONFIG['exec_prefix']}
bindir = #{RbConfig::MAKEFILE_CONFIG['bindir']}
END_OF_MAKEFILE

=> prefix = /usr/local
   exec_prefix = $(prefix)
   bindir = $(exec_prefix)/bin  MAKEFILE_CONFIG = {}

RbConfig.expand 用于在 rbconfig 中解析上述引用。

require 'rbconfig'
p RbConfig.expand(RbConfig::MAKEFILE_CONFIG["bindir"])
# => "/usr/local/bin"
TOPDIR

Ruby 安装目录。

公共类方法

expand(val, config = CONFIG) 点击切换源代码
RbConfig.expand(val)         -> string
RbConfig.expand(val, config) -> string

使用给定的 val 值扩展变量。

RbConfig.expand("$(bindir)") # => /home/foobar/all-ruby/ruby19x/bin
# File rbconfig.rb, line 299
def RbConfig::expand(val, config = CONFIG)
  newval = val.gsub(/\$\$|\$\(([^()]+)\)|\$\{([^{}]+)\}/) {
    var = $&
    if !(v = $1 || $2)
      '$'
    elsif key = config[v = v[/\A[^:]+(?=(?::(.*?)=(.*))?\z)/]]
      pat, sub = $1, $2
      config[v] = false
      config[v] = RbConfig::expand(key, config)
      key = key.gsub(/#{Regexp.quote(pat)}(?=\s|\z)/n) {sub} if pat
      key
    else
      var
    end
  }
  val.replace(newval) unless newval == val
  val
end
ruby() 点击切换源代码
RbConfig.ruby -> path

返回 ruby 命令的绝对路径。

# File rbconfig.rb, line 357
def RbConfig.ruby
  File.join(
    RbConfig::CONFIG["bindir"],
    RbConfig::CONFIG["ruby_install_name"] + RbConfig::CONFIG["EXEEXT"]
  )
end