What is Bundler?

번들러는 필요한 정확한 gem과 버전을 추적하고 설치하여 루비 프로젝트를 위한 일관된 환경을 제공합니다.

번들러는 의존성 지옥에서 벗어나게 하고, 필요한 gem이 개발, 스테이징, 프로덕션에 있는지 확인해 줍니다. bundle install을 실행해 간단히 프로젝트에서 사용해 보세요.

시작하기

번들러는 배우기 쉽습니다! 터미널을 열고 이 명령어를 실행하세요.

$ gem install bundler

프로젝트의 최상위 디렉터리의 Gemfile에 의존성을 기술하세요.

source 'https://rubygems.org'
gem 'nokogiri'
gem 'rack', '~>1.1'
gem 'rspec', :require => 'spec'
Learn More: Gemfiles

지정한 소스로부터 필요한 모든 gem을 설치하세요.

$ bundle install
$ git add Gemfile Gemfile.lock
자세한 내용은: bundle install

두 번째 명령어는 저장소에 Gemfile, Gemfile.lock 파일을 추가합니다. 이렇게 해두면 배포 환경, 애플리케이션의 다른 개발자 모두 지금 사용 중인 서드파티 코드를 사용하도록 할 수 있습니다.

애플리케이션의 안에서, 번들이 적용된 환경 로드하기

require 'rubygems'
require 'bundler/setup'

# 평소처럼 gem을 require하세요
require 'nokogiri'
자세한 내용은: Bundler.setup

번들 안의 gem에 들어있는 실행 파일 실행하기

$ bundle exec rspec spec/models

어떤 때는, bundle exec 없이도 실행 파일을 실행할 수 있습니다. 번들러 안의 어떤 gem과도 충돌하지 않고 시스템에 실행 파일이 설치되어 있는 경우가 그 경우죠.

하지만 이 상황은 신뢰하기 힘들고 고통의 근원이 됩니다. 동작하는 것처럼 보이더래도, 다른 기기에서나 미래에 움직이지 않게 될 가능성이 있습니다.

마지막으로, 원한다면 번들 안의 gem의 단축 실행 파일을 만들 수 있습니다.

$ bundle install --binstubs
$ bin/rspec spec/models

bin 안의 실행 파일들은 번들로 스코프되고 항상 동작합니다.

자세한 내용은: Executables

번들러로 루비젬 만들기

번들러로 새로운 gem을 쉽게 만들 수도 있습니다. rails new로 새로운 레일스 프로젝트를 만드는 것처럼, bundle gem으로 일반적인 gem 프로젝트를 만들 수 있습니다.

설명, 테스트, 배포에 필요한 README, .gemspec, Rakefile, 디렉터리 구조, 모든 기본 뼈대를 포함해 gem을 만듭니다.

$ bundle gem my_gem
Creating gem 'my_gem'...
      create  my_gem/Gemfile
      create  my_gem/.gitignore
      create  my_gem/lib/my_gem.rb
      create  my_gem/lib/my_gem/version.rb
      create  my_gem/my_gem.gemspec
      create  my_gem/Rakefile
      create  my_gem/README.md
      create  my_gem/bin/console
      create  my_gem/bin/setup
      create  my_gem/CODE_OF_CONDUCT.md
      create  my_gem/LICENSE.txt
      create  my_gem/.travis.yml
      create  my_gem/test/test_helper.rb
      create  my_gem/test/my_gem_test.rb
Initializing git repo in ./my_gem
자세한 내용은: bundle gem

번들러와 함께 사용할 수 있는 것들

기여하기

번들러는 많은 기여자와 사용자를 가지고 있고 상당히 많이 논의되고 있습니다. 질문이 있으시다면, IRC 채널이나 메일링 리스트에 해보세요. 프로젝트에 기여하는데 관심이 있으시다면(프로그래밍 스킬은 필요 없습니다), 기여하기 가이드를 읽으세요. 번들러 프로젝트에 참여하는 동안, 행동 강령을 명심하고, 모두에게 포용적이고 우호적으로 행동해 주시길 바랍니다. 스폰서를 하실 생각이 있으시거나 보안 관련 질문이 있으시면, 코어 팀에 직접 연락 주세요.

Fork me on GitHub
Docs: Previous Version (v1.10) Current Version (v1.11)