2011-11-12 19 views
15

Ilekroć uruchomić polecenie natarcia (tj rake routes) otrzymuję ten błąd:Dlaczego moje środowisko wymaga uruchomienia pakietu exec?

You have already activated rake 0.9.2.2, but your Gemfile requires rake 0.9.2. Using bundle exec may solve this. 

Jeśli biegnę bundle exec rake routes to działa.

Chcę móc po prostu rake routes bez konieczności uruchamiania bundle exec rake routes.

Sprawdziłem inne pytania z podobnymi błędami i wypróbowałem różne rozwiązania (takie jak uruchamianie bundle update) bezskutecznie.

Również w moim gemfile I określono gem 'rake', '0.9.2'

Wszelkie sugestie?

+0

Szybka aktualizacja. Niedawno znalazłem to wyjaśnienie z RailsTutorial dotyczące potrzeby użycia 'bundle exec':" Jak wspomniano pokrótce w Sekcji 3.2.1, ogólnie konieczne jest przedrostek poleceń, takich jak rake lub rspec z bundem exec tak, aby programy działały dokładnie środowisko klejnotów określone przez Gemfile. (Z przyczyn technicznych jedynym wyjątkiem jest samo polecenie rails.) "Co więcej," dopóki numer wersji RVM jest 1.11.x lub większy, zainstalowane klejnoty będą automatycznie wykonywane we właściwym Środowisko bundlerów ", zatem nie wymaga prefiksu' bundle exec'. – mmichael

+0

link do objaśnienia: http://ruby.railstutorial.org/chapters/static-pages#sec-eliminating_bundle_exec – mmichael

Odpowiedz

8

Spróbuj wykonać:

gem list 

Będziesz prawdopodobnie zobaczyć kilka wersji zainstalowanej na prowizji. Przy okazji, jest prawidłowym sposobem wykonania kodu w kontekście aplikacji szyny, patrz this dla dobrego wyjaśnienia. Możesz więc używać aliasu do pisania mniej.

+2

Możesz także po prostu rozpocząć sesję powłoki z 'export RUBYOPT = -rbundler/setup', co jest wszystkim, co 'bundle exec' ma. – yfeldblum

+0

To było bardzo pouczające, dziękuję. – mmichael

+1

To daje mi: ruby: brak takiego pliku do załadowania - bundler/setup (LoadError) –

2

W przypadku korzystania z rvm. można spróbować następujących

rvm gem list 
2

Jak @lucapette powiedział, prawdopodobnie masz wiele wersji prowizji. Zakładając, że chcesz korzystać z wersji 0.9.2, możesz usunąć wersję 0.9.2.2, aby pozbyć się ostrzeżenia, a następnie uruchomić instalację pakietu, aby upewnić się, że masz wszystkie odpowiednie wersje klejnotów dla wybranej wersji (0.9.2 w twoim przypadku, 0.8.7 w moim przykładzie poniżej).

Oto kroki:

$ gem list 

*** LOCAL GEMS *** 

... 
rake (0.9.2.2, 0.8.7) 
... 

$ gem uninstall rake 

Select gem to uninstall: 
1. rake-0.8.7 
2. rake-0.9.2.2 
3. All versions 
> 2 

You have requested to uninstall the gem: 
     rake-0.9.2.2 
addressable-2.2.6 depends on [rake (>= 0.7.3)] 
... 
If you remove this gems, one or more dependencies will not be met. 
Continue with Uninstall? [Yn] Y 
Successfully uninstalled rake-0.9.2.2 
INFO: gem "0.9.2.2" is not installed 

$ bundle install 
0

może widzisz ten komunikat, jeśli niektóre perełki w swoim gemfile wymagają starszą wersję Rake to ten, który został zainstalowany. Być może masz zaktualizowaną prowizję. Często możesz to naprawić, aktualizując swoje klejnoty. Uruchom:

bundle update 

Spowoduje to zaktualizowanie pakietu przy użyciu najnowszych klejnotów w pliku gem. To prawdopodobnie naprawi niezgodność prowizji.

Powiązane problemy