답변:
이것은 .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 "foreman", :git => "https://github.com/pje/foreman.git"
번 들러는 즉시 .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 server
전체 프로젝트, .gem 파일을 호스팅하고 싶었 기 때문에 정확히 찾고 있었습니다.
source "file://#{File.expand_path('.')}/chef-11.10.0.dev.2"
Could not fetch specs from file://Users/nakilon/....../
기본적으로 Bundler는 먼저 시스템을 검사하고 보석을 찾을 수 없으면 Gemfile에 지정된 소스를 사용합니다.
"번들 패키지"및 "번들 설치 --local"을 사용하여 배치 한 gem을 번 들러가 강제로 사용할 수 있습니다.
개발 머신에서 :
bundle install
(필요한 gem을 설치하고 Gemfile.lock을 만듭니다)
bundle package
(공급 업체 / 캐시에서 보석을 캐시)
서버에서 :
bundle install --local
(--local은 "공급 업체 / 캐시의 gem 사용"을 의미)
bundle install
후 gemfile을 vendor / cache에 복사하고 gem을 gemfile에 다시 추가 한 다음 실행하십시오 bundle install --local
bundle package
3 년 후인 지금도 큰 제안입니다. Bundler 버전이 2.0보다 오래된 경우 (이 글에서 아직 출시되지 않은 bundle package --all
경우) 보석을 포함 path
하거나 git
종속성 을 포함 하려면 사용해야 합니다 . 그러나 그러한 종속성을 감지하면 유용한 알림을 제공합니다.
--local
문서 : "는 해당 플랫폼 별 보석이 rubygems.org에있는 경우 참고 그것을 찾을 수 없습니다 것입니다."