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 명령의 절대 경로를 반환해요.