Pytanie pakiet szyn czysty


Po zaktualizowaniu pakietu będziesz miał kilka klejnotów, które mogą być przestarzałe - od czasu zainstalowania nowszej wersji tego klejnotu. Nie ma takiego polecenia pod bundle plik wykonywalny tj. bundle clean. Jak pozbyć się tych przestarzałych klejnotów?

To jest próba zmniejszenia rozmiaru ślimaka w mojej aplikacji rails.


76
2017-10-26 15:36


pochodzenie




Odpowiedzi:


Jeśli używasz programu Bundler 1.1 lub nowszego, możesz go użyć bundle clean, tak jak sobie wyobrażałeś. Jest to zbędne, jeśli używasz bundle install --path (Bundler zarządza podaną lokalizacją za pomocą --path, więc bierze odpowiedzialność za usuwanie nieaktualnych klejnotów), ale jeśli użyłeś Bundlera do zainstalowania klejnotów jako klejnotów systemowych, bundle clean --force usunie wszystkie klejnoty systemowe niewymagane przez twój Gemfile. Oślepiająco oczywiste zastrzeżenie: nie rób tego, jeśli masz inne aplikacje, które polegają na klejnotach systemowych, których nie ma w twoim Gemfile!

Pat Shaughnessy ma dobry opis bundle clean i inne nowe dodatki w bundler 1.1.


120
2018-04-17 11:47



Dla osób używających rvm, zauważ to bundle clean --force nie dotyka twoich globalnych klejnotów, ale tylko te w twoim aktualnym gemsecie. Więc bundle clean --forcedaje taki sam wynik jak i jest wtedy szybszy rvm gemset empty śledzony przez bundle install. - Gabe Kopley
ZASTRZEŻENIE: "Bundle clean - force" może zdmuchnąć dużą liczbę klejnotów, jeśli nie jesteś ostrożny. To powinna być pierwsza linia tej odpowiedzi ... zwłaszcza, że ​​ma tak wiele głosów. BĄDŹ OSTROŻNY! - jerrylroberts


Jeśli używasz RVM, możesz go użyć rvm gemset empty dla bieżącego gemsetu - to polecenie usunie wszystkie klejnoty zainstalowane do bieżącego gemsetu (sam klejnot pozostanie na swoim miejscu). Następnie uruchomić bundle install w celu zainstalowania aktualnych wersji klejnotów. Upewnij się również, że nie usuniesz takich ogólnych klejnotów jak rake, bundler itd. Podczas rvm gemset empty (jeśli tak, to zainstaluj je ręcznie przez gem install przed bundle install).


34
2018-01-25 22:23





Jeśli używasz RVM, możesz zainstalować swoje klejnoty klejnoty. W ten sposób, gdy chcesz wykonać pełne czyszczenie, możesz po prostu usunąć gemset, który z kolei usuwa wszystkie klejnoty zainstalowane w nim. Inną opcją jest po prostu odinstalowanie nieużywanych klejnotów i ponowne uruchomienie bundle install dowództwo.

Ponieważ bundler ma być narzędziem do recenzowania gemów na poziomie projektu, nie zapewnia bundle clean dowództwo. Mogłoby to oznaczać możliwość usunięcia klejnotów związanych z innymi projektami, co nie byłoby pożądane. Oznacza to, że bundler jest prawdopodobnie niewłaściwym narzędziem do zarządzania katalogiem gem. Moim osobistym zaleceniem byłoby używanie klejnotów RVM do piaskowania twoich klejnotów w niektórych projektach lub wersjach ruby.


21
2017-10-26 16:03



Nie musisz usuwać gemsetu, możesz po prostu wpisać "gemstone rvm pusty gemset_name", a następnie ponownie uruchomić "bundle install". - JAG
Świetne wyjaśnienie. Wiedząc, że pomaga to bundler. Dzięki. - Volte
pakiet clean --force wykona zadanie - sailor
Dziękuję, @sailor! - Joshua Muheim
z rvm, wytrzyj folder .rvm / gems / ruby-xxxxxx / specifications, jeśli "instalacja pakietu" odmawia ponownego pobrania klejnotów. - barbacan


Szczerze mówiąc, miałem problemy z zależnościami cyklicznymi i najlepszą drogą do zrobienia rm -rf .bundle. Ratujcie sobie ból głowy i po prostu użyjcie młotka.


10
2017-12-12 14:44



Właściwie to mi nie pomogło, ten sam błąd. - holms
Musiałem to zrobić, aby przestać podsłuchiwać, że "musisz wywołać instalację pakietu z --no-wdrożeniem". Dzięki - Kevin
Dzięki za pomysł. Chociaż dla mnie pomógł mi większy młotek. rvm implode --force a następnie ponownie zainstaluj rvm - Ryan


Zakładam, że instalujesz klejnoty w vendor/bundle? Jeśli tak, dlaczego nie po prostu usunąć wszystkie klejnoty i zrobić porządek bundle install?


1
2017-10-26 16:06



mój katalog dostawców śledzi tylko zasoby i zainstalowane wtyczki. Jestem na Rails 3.1 - iGbanam
Jaki jest powód usunięcia nieużywanych klejnotów, jeśli nie są one kopiowane przy wdrażaniu? Nie zajmują tak dużo miejsca. - Leonid Shevtsov
wdrażam tę aplikację szyny w intranecie; co oznacza, że ​​obsługuję pliki i środowisko lokalnie. jeśli znasz jakieś rozwiązania, które mogę wykorzystać, podziel się. - iGbanam


Szukając odpowiedzi na to samo pytanie, z którym się zetknąłem gem_unused.
Możesz również przeczytać ten artykuł: http://chill.manilla.com/2012/12/31/clean-up-your-dirty-gemsets/
Kod źródłowy jest dostępny na GitHub: https://github.com/apolzon/gem_unused


1
2018-02-07 23:26





Po prostu usuń przestarzałe klejnoty z Gemfile. Jeśli mówisz o Heroku (nie wspomniałeś o tym), to ślimak jest kompilowany w każdym nowym wydaniu, po prostu używając aktualnej zawartości tego pliku.


0
2017-10-26 16:10



to niekoniecznie jest dla heroku. Chcę zmniejszyć rozmiar samej aplikacji szyny. - iGbanam