Ruby::Box는 단일 프로세스 내 코드 실행을 위한 격리된 공간을 제공하며, 상자 내 변경사항은 외부 환경에 영향을 미치지 않습니다.
Ruby::Box의 작동 및 유형
-
격리 원리: 각 상자는 고유한 클래스 정의, 상수, 전역 변수를 가지며, 변경사항은 해당 상자 내에서만 유효합니다.
-
상자 유형: Root Box(Ruby 내장 객체의 기본 템플릿), Main Box(애플리케이션의 기본 실행 컨텍스트), User Boxes(사용자 정의,
Ruby::Box.new로 생성)로 나뉩니다.
주요 API 및 격리 대상
-
API:
Ruby::Box.new로 상자 생성,box.require,box.load,box.eval로 코드 실행,Ruby::Box.current,Ruby::Box.enabled?로 상태 확인. -
격리 대상: 클래스, 상수, 전역 변수, 최상위 메서드를 상자별로 독립적으로 관리합니다.
활성화 및 제한사항
-
활성화: Ruby 프로세스 시작 전
RUBY_BOX=1환경 변수 설정이 필수입니다. - 주요 제한사항:
- 비보안 샌드박스: 네임스페이스 격리만 제공하며 시스템 리소스 접근은 가능합니다.
- 네이티브 확장 문제:
RUBY_BOX=1설정 시 젬 설치에 제약이 있습니다. - ActiveSupport 호환성: 일부
active_support/core_ext기능과 충돌할 수 있습니다. - 실험적 기능: Ruby 4.0의 실험적 기능이므로 프로덕션 사용에 주의가 필요합니다.
- 파일 스코프 실행:
.rb파일 내의 모든 정의는 로드된 상자의 컨텍스트를 따릅니다.