RbConfig 모듈
RbConfig 모듈
Ruby 인터프리터를 빌드할 때의 설정(configuration)을 저장해 두는 모듈이에요. ruby가 빌드될 때 mkconfig.rb가 이 파일을 만들어 주죠. mkmf가 호환되는 네이티브 확장(extension)을 만들 때 이 정보를 사용해요.
출처: Ruby 4.0 API
본문
RbConfig에 담긴 정보는 빌드 시점의 ruby에 관한 것이에요. 이 파일을 직접 고쳐도 다음에 ruby를 빌드하면 변경 내용이 사라지니, 읽기 전용 데이터라고 생각하는 게 맞아요.
상수 (Constants)
CONFIG: 저장된 설정 값들을 담고 있는 해시예요.DESTDIR:make install시의DESTDIR값이에요.LIMITS: 몇몇 타입 크기와 관련된 한계 값을 담는 해시예요.MAKEFILE_CONFIG:CONFIG와 거의 같지만, 아래처럼 다른 변수를 참조하는 형태를 가질 수 있어요.SIZEOF: 각 기본 타입의 크기(byte 수)를 담는 해시예요.TOPDIR: ruby가 설치된 디렉터리예요.
MAKEFILE_CONFIG는 이름 그대로 Makefile을 만들 때 쓰여요. 값들이 $(exec_prefix)/bin처럼 변수 참조 형태로 남아 있어서, 실제 경로는 expand로 풀어야 해요.
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"
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() → path
RbConfig.ruby -> path
현재 ruby 명령의 절대 경로를 반환해요.