programing

Gem 파일에서 로컬 .gem 파일을 지정하려면 어떻게 해야 합니까?

showcode 2023. 6. 19. 21:50
반응형

Gem 파일에서 로컬 .gem 파일을 지정하려면 어떻게 해야 합니까?

제가 설치하는 몇 개의 보석 파일이 있습니다.gem install xx.gem번들러에게 그것들을 사용하라고 말할 수 있습니까?아니면 소스 경로를 지정해야 합니까?

이것은 설치에 대한 질문에 대한 답변이 아닙니다..gemGem 파일을 편집하여 모든 종류의 위치를 Gem 단위로 지정할 수 있습니다.

지정:path속성은 해당 경로의 보석을 로컬 컴퓨터에 설치합니다.

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 파일을 사용할 수 없는 것 같습니다..gem 파일이 포함된 디렉토리에 :path를 지정하면 작동하지 않습니다.어떤 사람들은 그 목적을 위해 로컬 보석 서버(geminabox, stickler)를 설치하자고 제안했습니다.

그러나 파일 시스템에서 로컬 보석 "서버"를 사용하는 것이 훨씬 더 간단하다는 것을 알게 되었습니다..gem 파일을 로컬 디렉터리에 저장한 다음 "gem generate_index"를 사용하여 Gem 저장소로 만들기만 하면 됩니다.

mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index

마지막으로 Gem 파일에 다음 행을 추가하여 이 위치에 번들러를 가리킵니다.

source "file://path/to/repo"

리포지토리의 보석을 업데이트하는 경우 인덱스를 다시 생성해야 합니다.

애플리케이션 공급업체 폴더에 보석을 포장을 풀겠습니다.

gem unpack your.gem --target /path_to_app/vendor/gems/

그런 다음 Gem 파일의 경로를 추가하여 압축 해제된 Gem을 연결합니다.

gem 'your', '2.0.1', :path => 'vendor/gems/your'

기본적으로 번들러는 먼저 시스템을 확인하고 보석을 찾을 수 없으면 Gem 파일에 지정된 소스를 사용합니다.

"bundle package" 및 "bundle install --local"을 사용하여 배포한 보석을 번들러가 사용하도록 강제할 수 있습니다.

개발 컴퓨터에서 다음을 수행합니다.

bundle install

(필수 보석을 설치하고 Gemfile.lock을 만듭니다.)

bundle package

(벤더/캐시에서 중요한 요소를 캐쉬)

서버에서:

bundle install --local

(--local은 "벤더/캐시의 보석 사용"을 의미합니다.)

추가 중.gem로.vendor/cache효과가 있는 것 같습니다.옵션이 필요하지 않음Gemfile.

다음을 사용하여 자체 Gem 서버를 실행하는 것이 가장 쉽다는 것을 알게 되었습니다.geminabox

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

언급URL : https://stackoverflow.com/questions/5633939/how-do-i-specify-local-gem-files-in-my-gemfile

반응형