2013-08-09 8 views
11

Kiedy biegnę ruby -version uzyskać:Dlaczego nie mogę określić wersji mojej instalacji ruby?

ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0] 
-e:1: undefined local variable or method `rsion' for main:Object (NameError) 

Co może być nie tak?

+0

tyle dziwne, 'rubin --version' zwraca żadnych błędów. – ehsangh

+4

Głównym problemem związanym z twoją instalacją jest to, że ruby ​​1.8.7 jest już zakończony i nie jest wspierany teraz. Poza tym @R_G wyjaśnił już, że twoja 'ruby -version' jest równoważna' ruby ​​-v -e 'rsion''. – dbenhur

Odpowiedz

33

Użyj ruby ​​-v lub ruby ​​--version. Przetwarza on -wersję w rsion.

Każda z tych dwóch prac. Policzyć liczbę kresek:

ruby -v 
ruby --version 

Kiedy podać pojedynczy myślnik z "wersja", Ruby widzi to:

ruby -v -e rsion 
8

Jest -v opcja i - wersja opcja, ale nie ma opcji -version. (Policz linie kresek.) Spójrz na undefined local variable or method 'rsion' for main:Object.

Od tego thread, rzeczywisty powód jest bardzo jasne:

Jeśli prowadzisz ruby -version, ponieważ używasz tylko jeden myślnik, słowo „wersja” nie jest traktowana jako pojedyncza flaga ale zamiast tego jako lista flag. W tym przypadku podnosi on flagę -v, która drukuje informacje o wersji. Następnie próbuje przetworzyć flagę e, która zasadniczo mówi: "reszta tej linii jest skryptem ruby ​​do wykonania." Więc ruby ​​wiernie próbuje sparsować "rsion", czyli tam, gdzie dostajesz NameError.

Aby uzyskać informacje o wersji, można wykonać ruby -v lub ruby --version.

+1

Ahah, to jest niesamowite, twoja odpowiedź pozwoliła mi zrozumieć dokładny błąd, mimo że link niestety już nie działa (opcja v i opcja e istnieją, a opcja e próbuje uruchomić polecenie, a 'rsion' nie jest poprawne polecenie ('ruby -v' +' ruby ​​-e' z podniesionymi argumentami = 'ruby -version') –

+0

@ b.enoit.be Ładne łamanie części –

+0

@ b.enoit.be Zaktualizował również link .. –

0

Tak właśnie działa interpreter, ale ty masz stałe zdefiniowane również w Rubim.

Spróbuj

$> ruby -e " p RUBY_VERSION" 

można znaleźć następnie pod Module.constants

tutaj

>> Module.constants.sort.each do |constant| 
?> puts constant 
>> end 
Powiązane problemy