RbConfig 모듈
RbConfig 모듈
Ruby 인터프리터를 빌드할 때의 설정(configuration)을 저장해 두는 모듈이에요. 이 파일은 ruby가 빌드될 때 mkconfig.rb가 만들어 줘요.
출처: Ruby 3.3 API
본문
RbConfig에는 빌드 시점의 ruby 정보가 담겨 있어요. 예를 들어 mkmf가 호환되는 네이티브 확장(extension)을 만들 때 이 정보를 사용해요. 이 파일을 직접 고쳐도 다음에 ruby를 빌드하면 변경 내용이 사라져요.
상수 (Constants)
CONFIG: 저장된 설정 값들을 담고 있는 해시예요.DESTDIR:make install시의DESTDIR값이에요.MAKEFILE_CONFIG: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
RbConfig.expand는 위처럼 rbconfig 안에서 변수 참조를 해석할 때 사용돼요.
require 'rbconfig'
p RbConfig.expand(RbConfig::MAKEFILE_CONFIG["bindir"])
# => "/usr/local/bin"
TOPDIR: ruby가 설치된 디렉터리예요.
Public Class Methods
expand(val, config = CONFIG)
RbConfig.expand(val) -> string
RbConfig.expand(val, config) -> string
val에 들어 있는 변수 참조를 확장(expand)해요.
RbConfig.expand("$(bindir)") # => /home/foobar/all-ruby/ruby19x/bin
ruby()
RbConfig.ruby -> path
ruby 명령의 절대 경로를 반환해요.