[ruby] Gemfile에서 로컬 .gem 파일을 어떻게 지정합니까?

를 통해 설치하는 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"

( @JHurrah그의 의견 에서 언급했듯이 )


답변

번 들러는 즉시 .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.


답변

내 보석 서버를 사용하는 것이 가장 쉽다는 것을 알았습니다. geminabox

이 간단한 지침을 참조하십시오 .