[ruby-on-rails] 레일 번들 청소

번들을 업데이트 한 후에는 해당 gem의 최신 버전이 설치되었으므로 쓸모없는 gem이있을 것입니다. bundle실행 파일 아래에는 이러한 명령이 없습니다 bundle clean. 이 쓸모없는 보석을 어떻게 제거합니까?

이것은 내 레일 앱에서 슬러그 크기를 줄이기위한 시도입니다.



답변

Bundler 1.1 이상을 사용하는 경우 bundle clean상상 한대로를 사용할 수 있습니다. bundle install --path(Bundler는 –path로 지정한 위치를 관리하므로 오래된 gem을 제거하는 책임을집니다) 사용하는 경우 중복 되지만, Bundler를 사용하여 gem을 시스템 gem으로 설치 한 경우 시스템 gem bundle clean --force은 삭제하지 않습니다. Gemfile에 필요합니다. 눈에 띄게 분명한주의 사항 : Gemfile에없는 시스템 젬에 의존하는 다른 앱이있는 경우이 작업을 수행하지 마십시오!

Pat Shaughnessy는 번 bundle clean들러 1.1에 대한 좋은 설명 과 기타 새로운 추가 사항을 가지고 있습니다.


답변

RVM을 사용 rvm gemset empty하는 경우 현재 gemset에 사용할 수 있습니다. 이 명령은 현재 gemset에 설치된 모든 gem을 제거합니다 (gemset 자체는 그대로 유지됩니다). 그런 다음 bundle install실제 버전의 gem을 설치하기 위해 실행하십시오 . 또한 rake, bundler 등과 같은 일반 gem을 삭제하지 않도록하십시오 rvm gemset empty(이 경우 gem install이전 에을 통해 수동으로 설치하십시오 bundle install).


답변

RVM을 사용하는 경우 gemsets에 gem을 설치할 수 있습니다 . 이렇게하면 전체 정리를 수행하고 싶을 때 gemset을 간단히 제거하면 설치된 모든 gem이 제거됩니다. 다른 옵션은 사용하지 않는 gem을 제거하고 bundle install명령을 다시 실행하는 것 입니다.

번 들러는 프로젝트 별 gem 버전 관리 도구이기 때문에 bundle clean명령을 제공하지 않습니다 . 그렇게하면 다른 프로젝트와 관련된 보석도 제거 할 수 있으므로 바람직하지 않습니다. 즉, 번 들러가 gem 디렉토리를 관리하는 데 사용하는 잘못된 도구 일 수 있습니다. 내 개인적인 권장 사항은 RVM gemset을 사용하여 특정 프로젝트 또는 루비 버전에서 gem을 샌드 박스로 만드는 것입니다.


답변

솔직히, 번 들러 순환 종속성에 문제가 있었고 가장 좋은 방법은 rm -rf .bundle. 두통을 피하고 망치를 사용하십시오.


답변

나는 당신이 보석을 설치한다고 가정 vendor/bundle합니까? 그렇다면 모든 보석을 삭제하고 정리를 수행하는 것은 bundle install어떻습니까?


답변

동일한 질문에 대한 답변을 검색 할 때 gem_unused발견했습니다 .
당신은이 기사를 읽고 싶어 있습니다 http://chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
소스 코드는 GitHub의로 볼 수 있습니다 : https://github.com/ apolzon / gem_unused


답변

Gemfile에서 쓸모없는 보석을 제거하십시오. Heroku에 대해 이야기하고 있다면 (당신은 언급하지 않았습니다) 슬러그는 해당 파일의 현재 내용을 사용하여 각각의 새 릴리스를 컴파일합니다.