Jaki jest najlepszy sposób na odinstalowanie klejnotów z projektu rails3?

Zainstalowałem wszystkie moje klejnoty używając bundlera poprzez Gemfile. Pomyślałem (błędnie), że jeśli usunę klejnot z mojego Gemfile i uruchomię "bundle install", usunięte klejnoty zostaną odinstalowane. Przejrzałem plik pomocy bundlera i z tego co wiem, nie ma sposobu na odinstalowanie gemów.

Czy po prostu używam Gem uninstall x do wszystkiego? Czy to zmyli bundlera?

Author: lashleigh, 2011-01-12

6 answers

Bundler jest uruchamiany z katalogu głównego Twojej aplikacji, więc upewnia się, że wszystkie potrzebne klejnoty są obecne, aby Twoja aplikacja działała.Jeśli z jakiegoś powodu nie potrzebujesz już klejnotu, musisz uruchomić

    gem uninstall gem_name 

Jak stwierdziłeś above.So za każdym razem, gdy uruchomisz bundler, ponownie sprawdzisz zależności

Edycja-24.12.2014

Widzę, że ludzie wciąż przychodzą na to pytanie postanowiłem dodać trochę coś. Odpowiedź, którą dałem, dotyczyła przypadku, gdy utrzymujesz swoje klejnoty na całym świecie. Rozważ używanie menedżera klejnotów, takiego jak rbenv lub rvm, aby utrzymać zestawy klejnotów w zasięgu konkretnych projektów.

Oznacza to, że żadne klejnoty nie będą instalowane na poziomie globalnym i dlatego po usunięciu jednego z plików Gemfile i ponownym uruchomieniu pakietu, oczywiście nie zostanie on załadowany do twojego projektu. Następnie możesz uruchomić bundle clean (z katalogiem projektu) i usunie on z systemu wszystkie klejnoty, które były kiedyś zainstalowane z Twojego pliku Gemfile (w tym samym katalogu), ale w danym momencie już nie są wymienione tam.... krótko mówiąc-usuwa nieużywane klejnoty.

 131
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-24 09:13:53

To odinstaluje gem zainstalowany przez bundlera:

bundle exec gem uninstall GEM_NAME

Zauważ, że to rzuca

Błąd: podczas wykonywania gem ... (NoMethodError) undefined metoda 'delete' dla #<:>

Ale klejnot jest rzeczywiście usunięty. Przy następnym uruchomieniu bundle install gem zostanie ponownie zainstalowany.

 95
Author: phatmann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-02 22:03:12

W nowszych wersjach bundlera możesz użyć zadania clean:

$ bundle help clean
Usage:
    bundle clean

Options:
    [--dry-run=only print out changes, do not actually clean gems]
    [--force=forces clean even if --path is not set]
    [--no-color=Disable colorization in output]
    -V, [--verbose=Enable verbose output mode]

Cleans up unused gems in your bundler directory
$ bundle clean --dry-run --force
Would have removed actionmailer (3.1.12)
Would have removed actionmailer (3.2.0.rc2)
Would have removed actionpack (3.1.12)
Would have removed actionpack (3.2.0.rc2)
Would have removed activemodel (3.1.12)
...

Edit:

Nie jest to zalecane, jeśli używasz globalnego zestawu klejnotów (tzn.-wszystkie projekty trzymają swoje klejnoty w tym samym miejscu). Jest jednak kilka sposobów na oddzielenie klejnotów każdego projektu: {]}

  1. rvm gemsets (http://rvm.io/gemsets/basics )
  2. bundle install z jedną z następujących opcji: --deployment lub --path=<path> ( http://bundler.io/v1.3/man/bundle-install.1.html )
 21
Author: Evgenia Manolova,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-23 13:01:14

Musisz użyć 'Gem uninstall gem_name', aby odinstalować gem.

Zauważ, że jeśli zainstalowałeś system gem (tj. sudo bundle install) może być konieczne podanie katalogu binarnego za pomocą opcji-n, aby upewnić się, że pliki binarne należące do gem są usunięte. Na przykład

sudo gem uninstall gem_name  -n /usr/lib/ruby/gems/1.9.1/bin
 1
Author: Declan McGrath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-06 15:42:29

Wydawało mi się, że rozwiązałem to ręcznie usuwając klejnot jednorożca przez bundler ("sudo bundler exec Gem Unicorn Unicorn"), a następnie ponownie ("sudo bundle install").

Nie jestem pewien, dlaczego tak się stało, chociaż powyższa poprawka wydaje się działać.

 1
Author: Aaron Marks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-03 10:08:08

Jeśli chcesz oczyścić wszystkie klejnoty i zacząć od nowa

sudo gem clean
 1
Author: Douglas G. Allen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-08 09:13:41