를 통해 설치하는 gem 파일이 몇 개 gem install xx.gem
있습니다. 번 들러에게 사용하도록 지시 할 수 있습니까? 아니면 소스 경로를 지정해야합니까?
답변
이것은 .gem
패키지 설치에 대한 질문에 대한 대답은 아니지만 Gemfile 을 편집하여 모든 종류의 위치를 젬 단위로 지정할 수 있습니다.
:path
속성을 지정하면 로컬 시스템의 해당 경로에서 gem을 설치합니다.
gem "foreman", path: "/Users/pje/my_foreman_fork"
또는 :git
속성을 지정하면 원격 git 저장소에서 gem을 설치합니다.
gem "foreman", git: "git://github.com/pje/foreman.git"
# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"
# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"
# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"
답변
번 들러는 즉시 .gem 파일을 사용할 수 없습니다. : path를 .gem 파일을 포함하는 디렉토리로 지정하면 작동하지 않습니다. 일부 사람들은 그러한 목적으로 로컬 gem 서버 (geminabox, stickler)를 설치하도록 제안했습니다.
그러나 내가 훨씬 더 간단하게 발견 한 것은 파일 시스템에서 로컬 gem “서버”를 사용하는 것입니다. .gem 파일을 로컬 디렉토리에 넣은 다음 “gem generate_index”를 사용하여 Gem 저장소로 만드십시오.
mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index
마지막으로 Gemfile에 다음 줄을 추가하여 번 들러를이 위치로 지정하십시오.
source "file://path/to/repo"
저장소에서 gem을 업데이트하는 경우 인덱스를 재생성하십시오.
답변
응용 프로그램 공급 업체 폴더에서 보석을 풀고 싶습니다.
gem unpack your.gem --target /path_to_app/vendor/gems/
그런 다음 Gemfile에 경로를 추가하여 압축 해제 된 gem을 연결하십시오.
gem 'your', '2.0.1', :path => 'vendor/gems/your'
답변
기본적으로 Bundler는 먼저 시스템을 검사하고 보석을 찾을 수 없으면 Gemfile에 지정된 소스를 사용합니다.
답변
“번들 패키지”및 “번들 설치 –local”을 사용하여 배치 한 gem을 번 들러가 강제로 사용할 수 있습니다.
개발 머신에서 :
bundle install
(필요한 gem을 설치하고 Gemfile.lock을 만듭니다)
bundle package
(공급 업체 / 캐시에서 보석을 캐시)
서버에서 :
bundle install --local
(–local은 “공급 업체 / 캐시의 gem 사용”을 의미)
답변
에 추가 .gem
하는 vendor/cache
것이 작동 하는 것 같습니다. 에 옵션이 필요하지 않습니다 Gemfile
.