gem list
에서는 보이지 않을 것입니다. 하지만
Bundler.setup
을 실행하면 사용 가능합니다.
gem 'nokogiri', :git => 'https://github.com/tenderlove/nokogiri.git'
gem 'deep_merge', '1.0', :git => 'https://github.com/peritor/deep_merge.git'
git 'https://github.com/rails/rails.git' do gem 'railties' gem 'action_pack' gem 'active_model' end
:git => 'https://github.com/rails/rails.git', :ref => '4aded' :git => 'https://github.com/rails/rails.git', :branch => '2-3-stable' :git => 'https://github.com/rails/rails.git', :tag => 'v2.3.5'
gem 'nokogiri', :git => 'https://github.com/tenderlove/nokogiri.git', :ref => '0eec4'
gem 'nokogiri', :git => 'https://github.com/tenderlove/nokogiri.git' gem 'nokogiri', :git => 'git@github.com:tenderlove/nokogiri.git' gem 'nokogiri', :git => 'git://github.com/tenderlove/nokogiri.git'
gem 'nokogiri', :github => 'tenderlove/nokogiri'
gem 'rails', :github => 'rails'
gem 'rails', :git => 'https://github.com/rails/rails'
:branch
와 :ref
처럼 :git
에서 보통
사용하는 옵션이 적용됩니다.
gem 'rails', :github => 'rails', :ref => 'a9752dcfd15bcddfe7b6f7126f3a6e0ba5927c56'
:bitbucket
), GitHub Gists(:gist
)에도
비슷한 단축이 있습니다.
gem 'capistrano-sidekiq', :github => 'seuros/capistrano-sidekiq' gem 'keystone', :bitbucket => 'musicone/keystone'
:github
단축은 번들러의 내장 git 소스 중 하나입니다.
번들러에는 :github
, :gist
, :bitbucket
이
이미 들어있고 추가도 할 수 있습니다.
git_source
를 호출해 사용자 정의 단축을 만들
수 있습니다. 여기에 Stash의 예제가 있습니다.
git_source(:stash){ |repo_name| "https://stash.corp.acme.pl/#{repo_name}.git" } gem 'rails', :stash => 'forks/rails'
http://
와 git://
URL은 안전하지 않습니다.
중계 공격자(man-in-the-middle attacker)는 체크아웃할 때 코드를 변조할 수 있고
원래 체크아웃 하려 했던 코드 대신 악의적인 코드를 제공할 가능성이 있습니다.
번들러 1.x 버전에서 :github
단축이 git://
URL을
사용하기 때문에, HTTPS URL을 사용하거나 :github
단축을 재정의해
HTTPS git 소스를 사용하시길 추천 합니다.
bundle config local.GEM_NAME /path/to/local/git/repository
bundle config local.rack ~/Work/git/rack
gem 'rack', :github => 'rack/rack', :branch => 'master'
이제 리모트 git 저장소를 체크아웃하는 대신에 로컬 오버라이드가
사용됩니다. 경로(path) 소스와 비슷하게 git 저장소가 변경될 때마다
변경사항이 번들러에 의해 자동으로 반영됩니다. 이 말은 로컬 git
저장소에 커밋이 추가되면 Gemfile.lock
안의 리비전이 갱신
된다는 뜻입니다. 이렇게 하면 git 서브모듈을 사용하는 것과 같은
주의가 필요합니다. 리모트에 푸시하기 전에 로컬 오버라이드가
푸시되었는지 확인해야 합니다. 그렇지 않다면 로컬 기기에만 있는
커밋을 지정하게 됩니다.
번들러는 개발자가 유효하지 않은 참조를 사용하지 않도록 많은 검사를
수행합니다. 특히 이 기능을 사용할 때는 Gemfile
에 브랜치를
지정하도록 강제합니다. Gemfile
에 적혀있는 브랜치와
로컬 git 저장소의 현재 브랜치가 다르다면 번들러는 중단됩니다.
언제나 올바른 브랜치에서 작업하는지 확인하고 다른 브랜치를 사용할 때
발생할 수 있는 사고를 예방할 수 있습니다.
마지막으로 번들러는 Gemfile.lock
안의 현재 리비전이
로컬 git 저장소에도 있는지 확인합니다. 이렇게 함으로써 번들러는
리모트의 최신 변경 사항을 가져오도록 강제 할 수 있습니다.
번들러가 브랜치를 확인하길 원치 않는다면 이 옵션을 오버라이드 하세요.
bundle config disable_local_branch_check true