模組 RbConfig

儲存 Ruby 解譯器組態的模組。

此檔案在建立 Ruby 時由 mkconfig.rb 建立。它包含 Ruby 的建置資訊,例如 mkmf 用於建置相容的原生擴充功能。對此檔案所做的任何變更,都將在下次建置 Ruby 時遺失。

常數

CONFIG

儲存的雜湊組態。

DESTDIR

在 make 安裝時 DESTDIR

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