$ bundle config [NAME [VALUE]] [--local] [--global] [--delete]
옵션:
--local
: 로컬 설정을 읽고 씁니다.
--global
: 전역 설정을 읽고 씁니다.
--delete
: NAME
값을 제거합니다.
설정 값을 검색하거나 설정합니다. 하나의 매개변수만 주어지면 값을 검색합니다. 두 개의 매개변수가 주어지면 기존의 값을 주어진 값으로 대체합니다.
기본 값으로 설정 값을 설정하면 기기의 모든 프로젝트에 설정됩니다.
전역 설정이 로컬 설정에 의해 대체된다면 이 명령어는 현재 값뿐만 아니라 대체 값과 그 값들이 어디에 지정되었는지를 보여줍니다.
$ bundle config
bundle config
을 실행하면 현재 번들을 위한
모든 번들러 설정과 그 값이 어디에서 설정되었는지를 출력합니다.
NAME
변수의 번들 설정을 읽습니다.
$ bundle config NAME
NAME
의 설정된 값과 그 값이 어디에서 설정되었는지를 출력합니다.
로컬과 전역 모두 출력합니다.
NAME
에 VALUE
를 씁니다.
$ bundle config NAME VALUE
NAME
에 VALUE
를 설정합니다. 설정은
~/.bundle/config
에 저장됩니다. NAME
이
이미 설정되어 있다면 경고와 함께 NAME
을 덮어 씁니다.
NAME
에 VALUE
를 씁니다.
$ bundle config --global NAME VALUE
NAME
에 VALUE
를 씁니다.
$ 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.setup
이 Gemfile
에서 설치되지 않은 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 저장소로 작업하게 할 수도 있습니다. 이렇게 하려면 로컬 우선으로 설정하실 필요가 있습니다.
$ 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 저장소에 있는지도 확인합니다. 이렇게 함으로써 번들러는
리모트의 마지막 변경 사항을 가져오도록 합니다.
환경이 rubygems.org 서버의 로컬 미러를 가지고 있다면,
mirror.URL
에 미러의 주소를 설정합니다. 그 시점에서 번들러는
Gemfile 안의 소스 대신, 미러에서 gem과 gemspec을 다운로드 합니다.
$ bundle config mirror.https://rubygems.org https://localgems.lan