programing

번들러로 보석 하나만 업데이트

i4 2023. 5. 31. 15:17
반응형

번들러로 보석 하나만 업데이트

저는 번들러를 사용하여 레일 앱의 종속성을 관리하고 있으며 다음과 같은 Get 저장소에 Gem을 호스팅하고 있습니다.

gem 'gem-name', :git => 'path/to/my/gem.git'

이 보석을 업데이트하기 위해 실행합니다.bundle update하지만 Gemfile에 언급된 모든 Gem도 업데이트합니다.그렇다면 특정 보석 하나만 업데이트하는 명령은 무엇입니까?

여기서 사이의 차이에 대한 좋은 설명을 찾을 수 있습니다.

보석 및 종속성 모두 업데이트:

bundle update gem-name 

또는

보석만 업데이트:

bundle update --source gem-name

부작용의 좋은 예들과 함께.

갱신하다

@Tim의 답변에 따르면, Bundler 1.14 기준으로 공식적으로 지원되는 방법은 다음과 같습니다.bundle update --conservative gem-name.

이 방법은 다음 명령을 실행하는 것입니다.

bundle update --source gem-name

번들러의 최신 버전(>= 1.14)에서는 다음과 같이 나타납니다.

bundle update --conservative gem-name

명령행에 보석 이름을 지정하기만 하면 됩니다.

bundle update gem-name

bundle update gem-name [--major|--patch|--minor]

이는 종속성에도 적용됩니다.

사용한 적이 있습니다.bundle update --source제 자신을 오랫동안 괴롭혔지만, 그것이 작동하지 않는 시나리오가 있습니다.다행히도, 이 단점을 고치기 위한 목표를 가진 보석이라는 것이 있습니다.

저는 또한 어떻게 사용하는지에 대한 짧은 블로그 게시물도 썼습니다.bundler-patch그리고 왜bundle update --source지속적으로 작동하지 않습니다.또한, 크리스모가 무엇을 매우 자세히 설명하는 게시물을 반드시 확인하세요.--source옵션이 있습니다.

bundler update --source gem-nameGemfile.lock의 수정 버전 해시를 업데이트하여 해당 Git 분기(기본적으로 마스터)의 마지막 커밋 해시와 비교할 수 있습니다.

GIT remote: git@github.com:organization/repo-name.git revision: c810f4a29547b60ca8106b7a6b9a9532c392c954

에서 확인할 수 있습니다.github.com/organization/repo-name/commits/c810f4a2(URL에는 단축형 8자 커밋 해시를 사용했습니다)

단일 보석을 특정 버전으로 업데이트하려는 경우:

  1. Gem 파일에서 Gem의 버전 변경
  2. bundle update
> ruby -v
ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-darwin19]
> gem -v
3.0.3
> bundle -v
Bundler version 2.1.4

언급URL : https://stackoverflow.com/questions/11263150/update-just-one-gem-with-bundler

반응형