번들러(Bundler) - 루비 프로젝트 의존성 관리 어플리케이션

개요

번들러는 루비 프로젝트의 의존성을 관리해주는 어플리케이션이다.

일반적으로 루비 패키지는 gem 명령어를 통해서 관리된다. 하지만 이 gem 명령어는 일종의 시스템 명령어처럼 작동하며, 이를 통해 루비 패키지를 설치하면 어떤 프로젝트이건 상관없이 설치한 라이브러리를 사용할 수 있게된다. 이는 일견 편리해보이지만, 의존성을 관리하는 데는 매우 불편하다. 예를 들어 특정 어플리케이션은 특정 버전의 gem을 필요로 한다. 이런 단순한 예는 gem을 통해서 어느 정도는 해결이 가능하지만 버전을 일일히 확인하고 설치하기 불편할 뿐더러, 의존성이 꼬리에 꼬리를 물고 복잡해지기 시작하면 일일히 대응하기는 매우 어려워진다. 또한 특정한 gem들은 실행 명령어를 가지고 있는데, 여러 버전의 gem이 설치되어있으면 어떤 버전의 명령어가 실행되는지 파악하기도 힘들고, 실행할 때마다 변경하기도 번거로워진다.

이러한 상황이 gem의 가치를 부정하는 것은 아니다. Bundler 역시 gem에 의존하고 있는 어플리케이션이지만, 이러한 문제에 대한 좀 더 나은 해결책을 제공한다. Bundler에서는 이러한 좀 더 복잡한 의존성 관리를 위해 각 프로젝트 단위로 Gemfile 선언하도록 한다. Gemfile에는 해당하는 어플리케이션에서 사용하는 모든 라이브러리가 선언된다. 이를 통해 이 어플리케이션의 모든 실행은 여기에 정의된 라이브러리들을 통해서 이루어지게 된다. 이를 위해 Bundler는 bundle 명령어를 제공해 이 라이브러리들을 설치하고 관리하기 용이하도록 도와준다.

또한 Ralis 3버전부터는 기본적으로 Bundler을 통해서 패키지를 관리한다.

설치

bundler는 루비gem 명령어를 통해서 설치할 수 있다.

$ gem install bundler

Bundler이 정상적으로 설치되었는지 확인한다.

$ bundle --version
Bundler version 1.5.3

Gemfile

명령어

exec

참조


Who am I?