2013-08-09 8 views
11

Quando eseguo ruby -version ottengo:Perché non è possibile determinare la versione di installazione di 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) 

Cosa c'è di sbagliato?

+0

abbastanza strano, 'rubino --version' restituisce nessun errore. – ehsangh

+4

Il problema principale con la tua installazione è che Ruby 1.8.7 è fine di vita e non supportato ora. Oltre a ciò, @R_G ha già spiegato che il tuo 'ruby -version' è equivalente a' ruby ​​-v -e 'rsion''. – dbenhur

risposta

33

Utilizzare ruby ​​-v o ruby ​​-version. Sta analizzando la versione in rsion.

Uno di questi due lavori. Contare il numero di trattini:

ruby -v 
ruby --version 

Quando si fornisce un unico cruscotto con "versione", Ruby vede questo:

ruby -v -e rsion 
8

C'è un -v opzione e un - versione, ma senza opzione di conversione. (contare i trattini). Guarda undefined local variable or method 'rsion' for main:Object.

Da questo thread, motivo reale è molto chiaro:

Se si esegue ruby -version, dal momento che si utilizza solo un singolo trattino, la parola 'versione' non è trattato come una sola bandiera, ma invece come una lista di bandiere. In questo caso, in , viene visualizzato il flag -v, che stampa le informazioni sulla versione. Quindi prova a elaborare il flag e, che in pratica dice "il resto di questa riga è uno script rubino da eseguire." Così rubino tenta fedelmente di analizzare "rsion" , che è dove stai ricevendo l'errore NameError.

Per ottenere le informazioni sulla versione, è possibile eseguire ruby -v o ruby --version.

+1

Ahah, che è piuttosto sorprendente, la tua risposta mi ha fatto capire l'errore esatto, anche se il link purtroppo non funziona più (opzione v e opzione e esiste e l'opzione e sta cercando di lanciare un comando, e 'rsion' non è un comando valido ('ruby -v' +' ruby ​​-e' con argomenti 'risen' = 'ruby -version') –

+0

@ b.enoit.be Bello rompere le parti –

+0

@ b.enoit.be Anche aggiornato il link .. –

0

Questo è proprio il modo in cui è l'interprete ma anche le costanti sono definite in Ruby.

Prova

$> ruby -e " p RUBY_VERSION" 

Potete trovare poi sotto Module.constants

qui

>> Module.constants.sort.each do |constant| 
?> puts constant 
>> end