bundle config

설정 값을 검색하거나 설정합니다.
$ bundle config [NAME [VALUE]] [--local] [--global] [--delete]

옵션:

--local: 로컬 설정을 읽고 씁니다.

--global: 전역 설정을 읽고 씁니다.

--delete: NAME 값을 제거합니다.

설정 값을 검색하거나 설정합니다. 하나의 매개변수만 주어지면 값을 검색합니다. 두 개의 매개변수가 주어지면 기존의 값을 주어진 값으로 대체합니다.

기본 값으로 설정 값을 설정하면 기기의 모든 프로젝트에 설정됩니다.

전역 설정이 로컬 설정에 의해 대체된다면 이 명령어는 현재 값뿐만 아니라 대체 값과 그 값들이 어디에 지정되었는지를 보여줍니다.

번들 설정을 읽습니다.
$ bundle config
매개변수 없이 bundle config을 실행하면 현재 번들을 위한 모든 번들러 설정과 그 값이 어디에서 설정되었는지를 출력합니다.
NAME 변수의 번들 설정을 읽습니다.
$ bundle config NAME
NAME의 설정된 값과 그 값이 어디에서 설정되었는지를 출력합니다. 로컬과 전역 모두 출력합니다.
번들 설정 변수 NAMEVALUE를 씁니다.
$ bundle config NAME VALUE
전역 설정의 경우라면 현재 사용자로서 실행하는 모든 번들에 대해 NAMEVALUE를 설정합니다. 설정은 ~/.bundle/config에 저장됩니다. NAME이 이미 설정되어 있다면 경고와 함께 NAME을 덮어 씁니다.
전역/사용자 번들 설정 변수 NAMEVALUE를 씁니다.
$ bundle config --global NAME VALUE
위의 명령어와 같은 동작을 합니다.
로컬 번들 설정 변수 NAMEVALUE를 씁니다.
$ bundle config --local NAME VALUE
위의 명령어와 같은 동작을 하지만 로컬 애플리케이션용입니다. 설정은 app/.bundle/config에 저장됩니다.
전역과 로컬에서 NAME의 설정을 삭제합니다.
$ bundle config --delete NAME
전역과 로컬에서 NAME의 설정 값을 삭제합니다. --global이나 --local 플래그와는 호환되지 않습니다.

빌드 옵션

bundle config는 특정 gem을 설치할 때마다 인스톨러에 플래그를 넘겨주는 용도로도 사용할 수 있습니다.

매우 일반적인 예로 mysql gem은 스노우 레퍼드에서 gem install을 할 때 mysql_config 실행 파일을 찾기 위한 설정 플래그를 필요로 합니다.

$ gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

mysql_config의 실행 파일의 구체적인 위치가 기기마다 다를 수 있으므로 각 기기마다 이 플래그를 지정할 수 있습니다.

$ bundle config build.mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

이 명령어를 실행하면 mysql gem을 설치해야 할 때마다 지정한 플래그를 함께 넘겨 줍니다.

설정 키

번들러에서의 설정 키는 두 가지 양식이 있습니다. 표준 양식과 환경 변수 양식입니다.

예를 들어, bundle install--without 플래그를 넘겨주어 번들러가 Gemfile의 특정 그룹을 설치하지 않도록 할 경우 번들러는 이 값을 app/.bundle/config 안에 남겨 두어 Bundler.setupGemfile에서 설치되지 않은 gem을 찾으려 하지 않도록 합니다. 덤으로 bundle install을 또 실행 할 때 이 설정을 기억해 두었다가 그 그룹들을 생략합니다.

이 설정의 표준 양식은 "without"입니다. 표준 양식에서 환경 변수 양식으로 변경하려면 대문자로 바꾸고 앞에 BUNDLE_을 붙이세요. "without"의 환경 변수 양식은 BUNDLE_WITHOUT입니다.

가능한 키의 목록

전체 설정 키와 그 기능은 다음과 같습니다. bundle install을 실행하면 작업에 대해 더 많이 배울 수 있습니다.

  • auto_install (1): auto_install 설정을 1이나 다른 참 값으로 하면 에러를 일으키는 대신 gem 자동 설치를 활성화합니다. 이 행동은 밑의 명령어에 영향을 미칩니다. show, binstubs, outdated, exec, open, console, license, clean.
  • path (BUNDLE_PATH): gem을 설치할 디스크 경로입니다. 개발 환경에서는 $GEM_HOME, --deployment가 사용되었다면 vendor/bundle이 기본 값입니다.
  • frozen (BUNDLE_FROZEN): Gemfile의 변경을 금지합니다. --deployment가 사용되었다면 기본 값은 true입니다.
  • without (BUNDLE_WITHOUT): 설치하지 말아야 할 그룹의 목록입니다. :으로 구분됩니다.
  • bin (BUNDLE_BIN): 번들 안의 gem에서 실행 파일을 특정 디렉터리에 설치합니다. 기본 값은 false입니다.
  • gemfile (BUNDLE_GEMFILE): 번들러가 Gemfile로 사용할 파일의 이름입니다. 이 파일의 위치는 프로젝트의 루트도 설정합니다. 프로젝트의 루트는 무엇보다도 Gemfile의 상대 경로를 확인하는 데 사용됩니다.
  • ssl_ca_cert (BUNDLE_SSL_CA_CERT): 지정된 CA 인증서 파일이나 PEM 형식의 신뢰된 CA 인증서가 여럿 들어있는 폴더의 경로입니다.
  • ssl_client_cert (BUNDLE_SSL_CLIENT_CERT): PEM 형식의 X.509 클라이언트 인증서와 키가 들어있는 지정된 파일의 경로입니다.
  • cache_path (BUNDLE_CACHE_PATH): bundle package를 실행할 때 번들러가 캐시할 gem을 넣을 디렉터리입니다. --deployment 옵션으로 설치할 때 번들러가 해당 디렉터리를 들여다보게 됩니다.
  • disable_multisource (BUNDLE_DISABLE_MULTISOURCE): 이 값이 설정되어 있으면 Gemfile에 여러 소스가 있을 경우 경고 대신 에러를 출력합니다. bundle config --delete disable_multisource로 해제할 수 있습니다.

일반적으로 해당 플래그를 bundle install이나 bundle package 명령어에 사용함으로써 애플리케이션별 설정을 해야합니다.

환경 변수나 bundle config 어느 쪽이든 좀 더 상황에 맞는 쪽을 골라 전역 설정할 수 있습니다. 양쪽 다 사용한다면 환경 변수가 전역 설정보다 우선됩니다.

로컬 git 저장소

번들러는 리모트 버전이 아닌 로컬 git 저장소로 작업하게 할 수도 있습니다. 이렇게 하려면 로컬 우선으로 설정하실 필요가 있습니다.

$ bundle config local.GEM_NAME /path/to/local/git/repository

예를 들어 로컬 Rack 저장소를 사용하시려면 이렇게 하시면 됩니다.

$ bundle config local.rack ~/Work/git/rack

이제 리모트 git 저장소에서 체크아웃 하는 대신, 로컬 저장소가 우선됩니다. 경로(path) 소스와 비슷하게 로컬 git 저장소가 변경 될 때마다 변경 내용은 자동으로 번들러가 반영해줍니다. 이 말은 로컬 git 저장소의 커밋은 Gemfile.lock 안의 리비전을 로컬 git 저장소의 리비전으로 갱신한다는 뜻입니다. 이것은 git 서브모듈을 사용할 때처럼 주의가 필요합니다. 리모트에 푸시하기 전에 로컬에 있는 게 전부 푸시되어 있는지 확인하셔야 합니다. 그렇지 않으면 로컬 기기에만 있는 커밋을 가리키게 됩니다.

번들러에는 잘못된 참조로 작동하지 않는지 확신하기 위한 많은 확인 과정이 있습니다. 특히 이 기능을 사용하기 위해서는 Gemfile에서 브랜치를 명시해야 합니다. Gemfile 안에 지정되어 있는 브랜치와 로컬 저장소의 현재 브랜치가 맞지 않으면 번들러는 실행을 정지합니다. 이것은 항상 정확한 브랜치에 대해 작업하고 있는지 확인하고 의도치 않게 다른 브랜치를 보는 것을 예방합니다.

마지막으로 번들러는 Gemfile.lock 안의 맞는 리비전이 로컬 git 저장소에 있는지도 확인합니다. 이렇게 함으로써 번들러는 리모트의 마지막 변경 사항을 가져오도록 합니다.

gem 소스 미러

환경이 rubygems.org 서버의 로컬 미러를 가지고 있다면, mirror.URL에 미러의 주소를 설정합니다. 그 시점에서 번들러는 Gemfile 안의 소스 대신, 미러에서 gem과 gemspec을 다운로드 합니다.

$ bundle config mirror.https://rubygems.org https://localgems.lan
Fork me on GitHub
Docs: Previous Version (v1.10) Current Version (v1.11)