Из этого thread фактическая причина очень понятна:
Если вы запустите ruby -version, так как вы используете только одну тире, слово "version" не рассматривается как один флаг, а вместо этого как список флагов. В в этом случае он берет флаг -v, который печатает информацию о версии. Затем он пытается обработать флаг e, который в основном говорит "остальная часть этого строка - ruby script для выполнения." Таким образом, Ruby верно пытается разобрать "rsion", в котором вы получаете NameError.
Чтобы просто получить информацию о версии, вы можете сделать ruby -v или ruby --version.
Ответ 3
Это так, как интерпретатор, но у вас есть константы, определенные в Ruby.
Try
$> ruby -e " p RUBY_VERSION"
Вы можете найти в разделе Module.constants
здесь
>> Module.constants.sort.each do |constant|
?> puts constant
>> end