pakiet szyn czysty


88

Po aktualizacji paczki będziesz mieć kilka klejnotów, które mogą być przestarzałe - ponieważ została zainstalowana nowsza wersja tego klejnotu. Nie ma takiego polecenia pod bundleplikiem wykonywalnym tj bundle clean. Jak pozbyć się tych przestarzałych klejnotów?

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

Odpowiedzi:


132

Jeśli używasz Bundlera 1.1 lub nowszego, możesz użyć bundle clean, tak jak sobie wyobrażałeś, że możesz. Jest to zbędne, jeśli używasz bundle install --path(Bundler zarządza lokalizacją określoną przez --path, więc bierze odpowiedzialność za usuwanie przestarzałych klejnotów), ale jeśli użyłeś Bundlera do zainstalowania klejnotów jako klejnotów systemowych bundle clean --force, usunie wszystkie klejnoty systemowe wymagane przez twój plik 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 cleani inne nowości w pakiecie 1.1 .


30
Dla tych, którzy używają rvm, pamiętaj, że bundle clean --forcenie dotyczy to twoich globalnych klejnotów, ale tylko tych w twoim obecnym zestawie klejnotów. bundle clean --forceDaje więc ten sam wynik co i szybciej niż rvm gemset emptynastępuje bundle install.
— Gabe Kopley

19
OŚWIADCZENIE: "Czystość pakietu - siła" może zniszczyć dużą liczbę klejnotów, jeśli nie będziesz ostrożny. To powinna być pierwsza linijka tej odpowiedzi ... zwłaszcza, że ​​ma tak wiele głosów. BĄDŹ OSTROŻNY!
— jerrylroberts

36

Jeśli używasz RVM, możesz użyć rvm gemset emptydla bieżącego zestawu gemset - to polecenie usunie wszystkie klejnoty zainstalowane w obecnym zestawie gemset (sam gemset pozostanie na miejscu). Następnie uruchom bundle install, aby zainstalować aktualne wersje klejnotów. Upewnij się również, że nie usuniesz takich ogólnych klejnotów, jak rake, bundler i tak dalej podczas rvm gemset empty(jeśli tak jest, zainstaluj je ręcznie przez gem installwcześniej bundle install).


22

Jeśli używasz RVM, możesz zainstalować swoje klejnoty w klejnotach . W ten sposób, jeśli chcesz przeprowadzić pełne czyszczenie, możesz po prostu usunąć zestaw klejnotów, który z kolei usunie wszystkie zainstalowane w nim klejnoty. Inną opcją jest po prostu odinstalowanie nieużywanych klejnotów i ponowne uruchomienie bundle installpolecenia.

Ponieważ pakiet ma być narzędziem do wersjonowania klejnotów projektu na projekt, nie udostępnia bundle cleanpolecenia. Oznaczałoby to możliwość usunięcia klejnotów związanych również 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. Moją osobistą rekomendacją byłoby użycie klejnotów RVM do piaskownicy klejnotów w niektórych projektach lub wersjach ruby.


41
Nie ma potrzeby usuwania gemset, wystarczy wpisać „rvm gemset empty gemset_name”, a następnie ponownie uruchomić „bundle install”.
— JAG,

Świetne wyjaśnienie. Świadomość tego o pakiecie pomaga. Dzięki.
— Volte

9
czysty pakiet - siła wykona zadanie
— marynarz

rvm, wyczyść folder .rvm / gems / ruby-xxxxxx / specyfikacji, jeśli „instalacja pakietowa” odmawia ponownego pobrania klejnotów.
— Barbacan

@JAG Dodałbym, że po wyczyszczeniu gemset trzeba 'gem install bundler' by móc zadzwonić do instalacji paczki
— maleta

13

Szczerze mówiąc, miałem problemy z zależnościami cyklicznymi bundlerów i najlepszym sposobem jest rm -rf .bundle. Oszczędź sobie bólu głowy i po prostu użyj młotka.


1
Musiałem to zrobić, aby przestał wkurzać mnie „musisz wywołać instalację pakietu z opcją --no-deployment”. Dzięki
— Kevin,

2
Dzięki za pomysł. Chociaż dla mnie pomogło użycie większego młotka. rvm implode --forcea następnie ponownie zainstaluj rvm
— Ryan,

1

Zakładam, że instalujesz klejnoty w vendor/bundle? Jeśli tak, dlaczego nie usunąć wszystkich klejnotów i wyczyścić bundle install?


mój katalog dostawcy śledzi tylko zasoby i zainstalowane wtyczki. Jestem na Railsach 3.1
— iGbanam

Więc jaki jest powód, aby usunąć nieużywane klejnoty, jeśli nie są kopiowane podczas wdrażania? Nie zajmują dużo miejsca.
— Leonid Shevtsov

wdrażam tę aplikację rails w intranecie; co oznacza, że ​​obsługuję pliki i środowisko lokalnie. jeśli znasz jakieś rozwiązania, których mogę w tym celu użyć, podziel się nimi.
— iGbanam


0

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


to niekoniecznie dotyczy heroku. Chcę zmniejszyć rozmiar samej aplikacji szyn.
— iGbanam

0

Po prostu wykonaj, aby usunąć przestarzałe klejnoty i usunąć ostrzeżenia o drukowaniu po pakiecie.

bundle clean --force

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.