2011-07-12 6 views
8

Widziałem wielejak aktywować lub ustawić domyślny rake?

You have already activated rake 0.9.x, but your Gemfile requires rake 0.x.x 

błędów.

Oczywiście można je rozwiązać (tymczasowo lub zawsze) za pomocą następujących metod.

bundle exec rake 

Powyższa metoda działa, ale zawsze musisz wpisać pakiet exec.

To może być również rozwiązana przez

bundle update 

Ale pakiet aktualizacji aktualizuje również swoje inne perełki.

Niektórzy mówią, że to może być rozwiązane przez

gem uninstall unwanted_rake_version 

Tak, niechciana natarcia może być zainstalowany, ale jest on nadal oznaczony jako aktywowany w ten sposób, wciąż dając błąd.

Jednym z rozwiązań byłoby jednoznaczne określenie wersji rake w Gemfile, ale to nie jest pytanie. Chodzi o to, jak ustawić domyślną wersję rake'u, czy aktywować tę konkretną wersję w rvm lub innych typach instalacji ruby?

Odpowiedz

8

Nowsze wersje prowizji można aktywować, dodając opcjonalny pierwszy argument, czyli wersję z klejnotem.

$ rake 0.9.2

Ewentualnie, jeśli masz starszą wersję prowizji można ręcznie zaktualizować skrypt natarcia włączenie tego parametru (lub podać żadnej konkretnej wersji chcesz).

Skrypt rake zwykle żyje w/usr/bin/rake (lub ~/.rvm/gems/ruby ​​- # {ruby-name}/rake jeśli używasz rvm). I dyktuje ich wersję klejnotów do załadowania przed analizowaniem parametrów.

Wygląda na to w moim systemie.

$ cat ~/.rvm/gems/ruby-1.9.2-p180/bin/rake 

#!/home/tomcat/.rvm/rubies/ruby-1.9.2-p180/bin/ruby 
# 
# This file was generated by RubyGems. 
# 
# The application 'rake' is installed as part of a gem, and 
# this file is here to facilitate running it. 
# 

require 'rubygems' 

version = ">= 0" 

if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then 
    version = $1 
    ARGV.shift 
end 

gem 'rake', version 
load Gem.bin_path('rake', 'rake', version) 

Ważne bit jest gem 'rake', version zmieniając version zmusi grabie do konkretnej wersji systemu/RVM szerokości.

Aby uzyskać więcej informacji, Katz”article wyjaśnia ładnie jak binarne prowadzone pod RubyGems

+0

Na marginesie. Pakiet exec to bardziej "koszerna" strategia. Jeśli zmodyfikujesz skrypt rake, ruby-gems mogą (i prawdopodobnie będą) nadpisać go. Zamiast tego możesz odwołać się do kopii w bezpiecznym miejscu – diedthreetimes

3

Kiedy się tego błędu, jego zwykle rezultatem pracy pomiędzy projektami, które zależą od różnych wersjach prowizji.Łatwo naprawić to

gem uninstall rake 

A potem w katalogu projektu (zakładając, że pracujesz z Bundler) po prostu

bundle 
-1

Zawsze najpierw odinstalować grabie, dowodzić tak:

gem uninstall rake -v=version 

następnie zainstaluj inną wersję

gem install rake -v=version