Ответ 1
Используйте ruby -v или ruby -version. Он анализирует -версию в rsion.
Любая из этих двух работ. Подсчитайте количество тире:
ruby -v
ruby --version
Когда вы предоставляете одну тире с "версией", Ruby видит это:
ruby -v -e rsion
Когда я запускаю ruby -version
, я получаю:
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0]
-e:1: undefined local variable or method `rsion' for main:Object (NameError)
Что может быть неправильным?
Используйте ruby -v или ruby -version. Он анализирует -версию в rsion.
Любая из этих двух работ. Подсчитайте количество тире:
ruby -v
ruby --version
Когда вы предоставляете одну тире с "версией", Ruby видит это:
ruby -v -e rsion
Существует опция -v и параметр - версия, но не вариант -version. Посмотрите undefined локальная переменная или метод 'rsion' для main: Object.
Из этого thread фактическая причина очень понятна:
Если вы запустите
ruby -version
, так как вы используете только одну тире, слово "version" не рассматривается как один флаг, а вместо этого как список флагов. В в этом случае он берет флаг -v, который печатает информацию о версии. Затем он пытается обработать флаг e, который в основном говорит "остальная часть этого строка - ruby script для выполнения." Таким образом, Ruby верно пытается разобрать "rsion", в котором вы получаете NameError.Чтобы просто получить информацию о версии, вы можете сделать
ruby -v
илиruby --version
.
Это так, как интерпретатор, но у вас есть константы, определенные в Ruby.
Try
$> ruby -e " p RUBY_VERSION"
Вы можете найти в разделе Module.constants
здесь
>> Module.constants.sort.each do |constant|
?> puts constant
>> end