WASM 환경에서 Hanami 액션 구동 실험
이 실험은 WebAssembly(WASM)를 활용하여 Hanami 프레임워크의 액션을 브라우저에서 실행하는 과정을 다룹니다.
1. WASM 빌드 및 Ruby VM 초기화
-
도구:
ruby_wasmGem을 사용하여 Ruby 3.4와 표준 라이브러리가 포함된 WASM 파일을 빌드하고, Gem 번들링을 통해ruby-web.wasm패키지를 생성합니다. -
브라우저 실행: JavaScript로 WASM을 로드, 컴파일 후
DefaultRubyVM으로 Ruby VM을 초기화합니다. VM 내에서 Hanami::Action 클래스를 정의하고,run_action메서드를 통해 사용자 입력을 받아 액션을 호출합니다.
2. Gem 의존성 문제 해결: BigDecimal
-
문제: Hanami::Utils가 의존하는
BigDecimalGem은 C 확장으로 인해 WASM 컴파일이 불가했습니다. -
해결:
BigDecimal의 더미 구현을 제공하고,RubyWasm::Packager::EXCLUDED_GEMS에 ‘bigdecimal’을 추가하여 컴파일러가 해당 Gem을 건너뛰도록 처리했습니다.
3. 현재 한계
-
실험은 라우터나 HTTP 요청 없이 ‘액션과 유효성 검사’ 수준에 머무릅니다.
-
WASM과 Ruby 지원의 한계로 전체 프레임워크 포팅은 아직 어렵습니다.
-
50MB에 달하는 WASM 패키지 크기로 인해 배포에 제약이 있습니다.
이 실험을 통해 저자는 WASM 지식 없이도 Ruby 코드를 브라우저에서 실행하는 가능성을 확인했습니다.