티스토리 뷰

해당 글은 https://blog.naver.com/kbs4674/221682881216 로 부터 게시글이 이전되었습니다.

 

 

해당 글은 당근마켓에서 주최한 루비 4번 째 모임(19. 10. 10)에서 소개된 이슈 및 해결법입니다.

 

 

  • bundle update --conservative

때로는 Ruby on rails 기반 웹사이트를 운영하면서, 피하고 싶지만 피할 수 없는 순간이 있습니다.

바로 Update입니다.

 

그런데 선뜻 bundle update 명령어를 치기란 쉽지 않습니다.

왜냐하면 Gem의 Update로 인해 버전에 따라 문법이 달라지거나, Gem 버전의 업데이트 규칙에 따라 Gem의 설정을 재정의를 하고자 추가적으로  config  폴더 혹은  config/initializers  에서 코드를 입력을 해줘야 하는 Gem이 존재할 수 있기 때문입니다. (아니면 최악의 경우로서는, Gem 기능이 먹통이 될 수 있고요..)

 

그래서 이런 최악의 경우를 막고자, Dependency에 의해 어쩔 수 없이 Update를 해야하는 경우에만 Gem Update를 하는 옵션이 존재합니다.

bundle update --conservative

 conservative  옵션을 통해 최소한의 업데이트만을 수행합니다.

 

실제로 저도 분리된 환경(Cloud9 2개를 만들고)에서 똑같은 Rails 프로젝트 환경에서  bundle update  시,

 --conservative  옵션을 준 것과, 주지 않은것으로 나눠서 실험을 해봤습니다.

 

1) bundle update

bundleUpdate.txt
0.01MB

## bundle update
 
Fetching https://github.com/plataformatec/devise.git
Fetching gem metadata from https://rubygems.org/............
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies.................................
Fetching rake 13.0.0 (was 12.3.3)
Installing rake 13.0.0 (was 12.3.3)
Using concurrent-ruby 1.1.5
Fetching i18n 1.7.0 (was 1.6.0)
Installing i18n 1.7.0 (was 1.6.0)
Fetching minitest 5.12.2 (was 5.11.3)
Installing minitest 5.12.2 (was 5.11.3)
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Fetching activesupport 5.1.7
Installing activesupport 5.1.7
Using builder 3.2.3
Fetching erubi 1.9.0 (was 1.8.0)
Installing erubi 1.9.0 (was 1.8.0)
 
... 이하 내용 생략 ...

 

2) bundle update --conservative

bundleUpdateConservative.txt
0.01MB

## bundle update --conservative
 
Updating installed gems
Updating actioncable
Successfully installed zeitwerk-2.2.0
Successfully installed activesupport-6.0.0
Successfully installed erubi-1.9.0
Successfully installed actionview-6.0.0
Successfully installed actionpack-6.0.0
Building native extensions. This could take a while...
Successfully installed nio4r-2.5.2
Successfully installed actioncable-6.0.0
Parsing documentation for zeitwerk-2.2.0
Installing ri documentation for zeitwerk-2.2.0
Installing darkfish documentation for zeitwerk-2.2.0
Parsing documentation for activesupport-6.0.0
Installing ri documentation for activesupport-6.0.0
Installing darkfish documentation for activesupport-6.0.0
Parsing documentation for erubi-1.9.0
Installing ri documentation for erubi-1.9.0
 
... 이하 내용 생략 ...

실험 결과,

1)  bundle update  명령어는 일단 발견되는 Gem에 대해 Fetching을 통해 최신 버전 정보를 가져오고난 뒤, 최신 버전으로 설치가 진행이 됩니다.

2)  bundle update --conservative  명령어는 Gem Dependency 등 업데이트가 필요한 Gem에 대해서만 Update가 이루어지는게 확인이 되었습니다.

(대표적인 확인 사례로, Nokogiri가 conservative 옵션에서는 Update가 안되는게 확인이 되었습니다.)

 

당근마켓에서 연사를 들으면서 꽤 재밌게 들었던 내용 중 하나였습니다 :)

 

 

  • 자료 참고

1. 당근마켓 블로그 : 서비스 중단없이 루비 버전 업데이트 [클릭]

 

루비온 레일즈 Ruby on Rails ROR

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함