Aktywowałeś już rake 0.9.0, ale twój Gemfile wymaga prowizji 0.8.7

124

Próbuję uruchomić projekt railsów, rozumiem

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Jeśli tak: „instalacja pakietu”

ale dostaję

You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7

podczas robienia

rake db:migrate
Mujah Maskey
źródło

Odpowiedzi:

245

Najpierw upewnij się, że rake jest wymieniony w twoim Gemfile. Jeśli tak nie jest, dodaj go i określ wersję „już aktywowaną”.

Następnie musisz powiedzieć pakietowi, aby zaktualizował wersję rake, której używa dla Twojej aplikacji:

bundle update rake

Zaktualizuje Gemfile.lockdla Ciebie.

danneu
źródło
2
to nie zadziałało dla mnie. kiedy uruchamiam to polecenie, robi dokładnie to samo, co „instalacja pakietu” i pokazuje, że używa tej samej wersji rake. Nie aktualizuje go.
EE33
5
Musiałem dodać gem „rake”, „version #” do mojego gemfile i uruchomić „bundle update rake”, aby mój gemfile.lock został poprawnie zaktualizowany. FYI dla każdego, kto nie mógł sprawić, by to rozwiązanie działało dla nich.
EE33
44

Tam, gdzie obecnie używasz poleceń rake, takich jak

rake db:migrate

Użyj tego zamiast tego:

bundle exec rake db:migrate

będzie tak, dopóki najnowsza wersja szyn i / lub grabie będzie dobrze ze sobą współpracować.

Floyd Price
źródło
3
Fragment o "najnowszej wersji rails i / lub rake", które dobrze ze sobą współpracują, ma znaczenie tylko w określonym, nienazwanym momencie i przy pewnych konkretnych założeniach dotyczących przepływu pracy w użyciu. Myślę, że to implikacja jest taka, że ​​„używasz krwawiącej krawędzi szyn, a prowizja jeszcze się nie nadrobiła”. Ale ten przypadek można również rozwiązać za pomocą podejścia „exec bundle” lub „edit Gemfile”, a te podejścia również rozwiązują problem, gdy nie ma wewnętrznych problemów ze zgodnością, a jedynie zagmatwana historia przepływu pracy.
jackr
24

Dziękuję Dobry Den, pozdrawiam stary. ale niewiele więcej musiałem zrobić. tutaj jest rozwiązanie (działa dla mnie). Dodałem

gem 'rake','0.8.7'

na Gemfile, którego tam nie było, ale moja nowa wersja railsów automatycznie instaluje rake (0.9.0).

po usunięciu rake0.9.0 gem uninstall rake i po wykonaniu tej czynności bundle update rakemogę tworzyć i migrować bazę danych.

Mujah Maskey
źródło
8

Zgrabiarka 0.9.0 łamie szyny.

Zobacz tutaj: Rake 0.9.0 'undefined method' task '

Użyj bundle exec rakezamiast, rakeaby uruchomić rake w odpowiedniej wersji.

sj26
źródło
7

Określ wersję, którą chcesz umieścić w pliku Gemfile.

gem 'rake', '0.9.0' 

następnie

bundle update rake

aby uruchomić zadanie rake, musisz użyć bundle exec

bundle exec rake db:migrate
hacksignal
źródło
Wydaje się, że późniejsza wersja nie jest „dezaktywowana”. Całkowite usunięcie Rake i ponowna instalacja działa jednak.
JosephK
6

Och, spójrz, to przyszłość. Dla mnie narzekał, że mam zainstalowaną rake 10.x, kiedy chciał 0.9.5. Nie jestem do końca pewien, nie jestem wystarczająco zaznajomiony z Rubim, aby naprawdę zagłębić się w to, co stało się z ostatnimi numerami wersji, ale zrobiłem:

gem uninstall rake
gem install rake -v 0.9.5

aby zmusić system do zainstalowania wersji rake, której żądała aplikacja (dla mnie była to Octopress).

cyfra
źródło
2
Przyszłość dzwoniła i chce pożyczyć twoje spodnie Hammer.
Keith Layne
Cześć, to znowu przyszłość. Słyszałem, że spodnie Hammera w końcu wracają.
subdigit
5

Miałem ten problem (z innym gemem, który nie był rake'em) i udało mi się go naprawić przez

gem uninstall <complaining gem>
gem install <complaining gem>

bundle install
bundle update

Zwróć uwagę, że słowo kluczowe „sudo” nie zostało użyte (np. Instalacja pakietu sudo), ponieważ może to umieścić twój klejnot w katalogach, w których Twoja aplikacja rails może nie szukać.

lodowiec
źródło
3

Jeśli rozumiem, o co nie pytasz, musisz otworzyć Gemfileplik i zmienić wiersz ...

gem 'rake', '0.8.7'

...do...

gem 'rake', '0.9.0'
Olivier L.
źródło
A jeśli chcę używać 0.8.7 zamiast 0.9?
Kir
6
gem rake nie jest domyślnie określony w twoim Gemfile, ponieważ jest zależny od Railsów. jeśli zaktualizowałeś klejnot rake do 0.9.0, nadal masz w swoim systemie gem 0.8.7 (sprawdź z gem list). Jestem prawie pewien, że jeśli gem 'rake', '0.8.7'nadal jest określony w twoim Gemfile.lock, nadal będzie używać klejnotu 0.8.7 bez problemu. jeśli nie, spróbuj uruchomić bundlepo dodaniu gem 'rake', '~> 0.8.7'do pliku Gemfile (nie .lock) i zobacz, czy coś mówi.
danneu
Zgadzam się z @Dobry Den.
Olivier L.
gem „rake” nie jest zdefiniowany. Jeśli mam kilka Gem Rake (0.8.7 i 0.9.0), przyjmuje wartość domyślną. Czy możemy ustawić domyślny na stary?
Mujah Maskey
3

Dodaj to do swojego Gemfile

# Rake 0.9.0 break Rails.
gem "rake", "!= 0.9.0"

Następnie odinstaluj rake-0.9.0


źródło