Warbler는 Ruby 애플리케이션을 배포하기 위한 JRuby 기반의 핵심 도구로, 다음과 같은 강력한 기능을 제공합니다.
Warbler의 주요 기능
-
실행 가능한 JAR 파일 생성: Ruby 유틸리티와 Gem 및 JAR 종속성(JRuby 자체 포함)을 단일 실행 가능한 JAR 파일로 패키징합니다.
-
배포 가능한 WAR 파일 생성: Rails, Hanami, Sinatra 등 웹 애플리케이션을 모든 종속성을 포함하는 배포 가능한 WAR 파일로 만듭니다.
-
내장 웹 서버 추가: WAR 파일에 미니 서버를 추가하여 명령줄에서 직접 실행할 수 있도록 합니다.
-
Ruby 코드 사전 컴파일: Ruby 코드를 JRuby 바이트코드 형식으로 사전 컴파일하여 지적 재산권을 난독화하고 보호합니다.
Warbler 실습 예제: image_voodoo_demo 패키징
이 게시물에서는 image_voodoo_demo 유틸리티를 사용하여 Warbler의 기능을 시연합니다.
-
준비:
image_voodoo_demoGem과 Warbler Gem을 설치합니다. -
기본 패키징:
image_voodoo_demo소스 코드 디렉토리에서warble명령을 실행하면,image_voodoo_demo.jar파일이 생성됩니다. 이 JAR 파일에는image_voodoo_demo코드,image_voodooGem, JRuby 런타임 및 Ruby 표준 라이브러리가 모두 포함됩니다. -
실행: 생성된 JAR 파일은
java -jar image_voodoo_demo.jar <이미지_경로>명령으로 실행할 수 있으며, Ruby 환경 설정 없이도 독립적으로 동작합니다. -
JAR 파일 구조: 생성된 JAR 파일은
JarMain.class,META-INF,gems,image_voodoo_demo등의 디렉토리로 구성되어 JRuby 런타임 및 모든 종속성을 포함합니다.
Warbler 사용자 정의: 코드 컴파일
Warbler는 config/warble.rb 파일을 통해 다양한 설정을 사용자 정의할 수 있습니다. 예를 들어, config.features = %w[compiled] 설정을 추가하여 Ruby 소스 코드를 JRuby 바이트코드 형식의 JVM 클래스 파일로 사전 컴파일할 수 있습니다. 이는 지적 재산 보호에 유용하며, javap 디스어셈블러로 컴파일된 코드를 확인할 수 있어 원본 소스 코드 복구를 어렵게 만듭니다.