Bundler jest uruchamiany z katalogu głównego Twojej aplikacji, więc zapewnia, że wszystkie potrzebne klejnoty są obecne, aby aplikacja działała.Jeśli z jakiegoś powodu nie potrzebujesz już klejnotu, musisz uruchomić
gem uninstall gem_name
jak napisałeś powyżej, więc za każdym razem, gdy uruchomisz pakiet, ponownie sprawdzi zależności
EDYCJA - 24.12.2014
Widzę, że ludzie wciąż podchodzą do tego pytania. Postanowiłem coś dodać. Odpowiedź, której udzieliłem, dotyczyła przypadku, gdy utrzymujesz swoje klejnoty na całym świecie. Rozważ użycie menedżera klejnotów, takiego jak rbenv lub rvm, aby zestawy klejnotów były ograniczone do określonych projektów.
Oznacza to, że żadne klejnoty nie zostaną zainstalowane na poziomie globalnym, a zatem po usunięciu jednego z Gemfile projektu i ponownym uruchomieniu pakietu, to oczywiście nie zostanie on załadowany do twojego projektu. Następnie możesz uruchomić pakiet czysty (z katalogiem projektu) i usunie on z systemu wszystkie klejnoty, które były kiedyś instalowane z twojego Gemfile (w tym samym katalogu), ale w tym momencie nie są już tam wymienione .... w skrócie - usuwa nieużywane klejnoty.
gem uninstall pg
z folderu projektu spowoduje odinstalowanie pg z zestawu gemset na poziomie globalnym / systemowym zamiast pakietuERROR: While executing gem ... (NoMethodError) undefined method `delete' for #<Bundler::SpecSet:0x00000101142268>
W nowszych wersjach bundlera możesz użyć czystego zadania:
edytować:
Nie jest to zalecane, jeśli używasz globalnego zestawu klejnotów (tj. - wszystkie twoje projekty trzymają klejnoty w tym samym miejscu). Jest jednak kilka sposobów na oddzielenie klejnotów każdego projektu:
rvm
gemsets ( http://rvm.io/gemsets/basics )bundle install
z dowolną z następujących opcji:--deployment
lub--path=<path>
( http://bundler.io/v1.3/man/bundle-install.1.html )źródło
bundle clean --force
usuniętych perełek, których nie używam w moim obecnym projekcie, ale używam w innych moich projektach. Czy miałem wytyczyć ścieżkę?bundle clean
Zwraca po prostu „Można użyć czyszczenia pakunku tylko wtedy, gdy ustawiono opcję --path lub --force”. Ale--path
opcja nie pojawia się nawet w pomocy.clean
zadanie nie ma sensu, jeśli używasz globalnego zestawu klejnotów. Ale jeśli chcesz, każdy z twoich projektów może mieć osobne klejnoty. Możesz to zrobić za pomocą rvm gemsets ( rvm.io/gemsets/basics ) lub określając ścieżkę klejnotów za pomocą--path
opcjibundle install
( bundler.io/v1.3/man/bundle-install.1.html )Aby odinstalować klejnot, musisz użyć opcji „odinstalowanie klejnotu nazwa_gmusa”.
Zwróć uwagę, że jeśli zainstalowałeś gem w całym systemie (np. Instalacja pakietu sudo), może być konieczne określenie katalogu binarnego za pomocą opcji -n, aby mieć pewność, że pliki binarne należące do gem zostaną usunięte. Na przykład
źródło
Wydawało się, że rozwiązałem ten problem, ręcznie usuwając klejnot jednorożca za pośrednictwem pakietu („sudo bundler exec gem uninstall unicorn”), a następnie ponownie zbierając („sudo bundle install”).
Nie jestem pewien, dlaczego tak się stało, chociaż powyższa poprawka wydaje się działać.
źródło
Jeśli chcesz oczyścić wszystkie swoje klejnoty i zacząć od nowa
źródło
Bundler ma teraz
bundle remove GEM_NAME
polecenie (od wersji 1.17.0, 25 października 2018 ).źródło