Версия Ruby, отображаемая в терминале, отличается от установленной версии

У меня есть ошибки в моем коде, которые, я считаю, связаны с использованием старой версии Ruby. Например, когда я набираю rand(0.01..100.0) в своей среде IRB, я получаю следующее:

irb(main):001:0> rand(0.01..100.0) TypeError: can't convert Range into
Integer
        from (irb):1:in `rand'
        from (irb):1
        from /usr/local/bin/irb:12:in `<main>'

Мне нужно использовать Ruby версии 2.0.0. Когда я набираю ruby -v, я получаю:

ruby 1.9.2p136 (2010-12-25 revision 30365) [x86_64-darwin10.6.0]

Однако это то, что я сделал, чтобы попытаться установить 2.0.0. Обратите внимание, что ранее у меня был установлен RVM на моем Macbook (теперь я использую rbenv), но я считаю, что полностью удалил RVM, и в моей системе больше нет его следов.

  1. Я использую доморощенный:

    $ brew update   
    Already up-to-date.
    
  2. Установил Ruby с помощью rbenv:

    $ rbenv install 2.0.0-p481 rbenv:
    /Users/GabbAHH//.rbenv/versions/2.0.0-p481 already exists continue
    with installation? (y/N)
    

    Когда я действительно захожу в эту папку в своем локальном каталоге, я подтверждаю версию 2.0.0 и не вижу никаких других версий.

  3. Я также набрал rbenv global 2.0.0-p481 в своем терминале без каких-либо проблем или другого возвращаемого сообщения.

  4. Однако ниже моя среда RubyGems показывает более старую версию Ruby.

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.5.0
  - RUBY VERSION: 1.9.2 (2010-12-25 patchlevel 136) [x86_64-darwin10.6.0]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-10
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/1.9.1
     - /Users/GabbAHH/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

5) версия РБЭНВ

$ rbenv versions
  system
* 2.0.0-p481 (set by /Users/GabbAHH//.rbenv/version)

6) echo $path возвращает разрыв строки:

$ echo $path

$

7) какой рубин

$ which ruby
/usr/local/bin/ruby

8)

$ $PATH
bash: /usr/local/bin:/usr/local/sbin:~/bin:/Users/GabbAHH//.rbenv/bin:/Users/GabbAHH//.rbenv/shims:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin: No such file or directory

Итак, несмотря на все это, почему я все еще использую Ruby 1.9.2? Дайте мне знать, если есть другая информация, которую я могу отобразить для вас, чтобы помочь устранить эту проблему.


person writofmandamus    schedule 24.10.2014    source источник
comment
попробуй rbenv shell 2.0.0-p481   -  person BroiSatse    schedule 24.10.2014
comment
Что говорит gem env? Добавьте это к своему вопросу, отредактировав и скопировав/вставив текст. Обязательно отформатируйте вывод, чтобы он был читабельным. Кроме того, что говорят rbenv versions и echo $PATH?   -  person the Tin Man    schedule 24.10.2014
comment
ты сделал rbenv rehash?   -  person SuckerForMayhem    schedule 25.10.2014
comment
@BroiSatse Я только что ввел эту команду, никакого выходного сообщения не было, и моя версия ruby ​​-v все еще говорит 1.9.2p136   -  person writofmandamus    schedule 25.10.2014


Ответы (2)


Раздел ниже (под горизонтальной линией) помог решить, я считаю, суть проблемы, но у меня все еще есть некоторые нерешенные проблемы. Один из симптомов — это запуск rspec. Похоже, это связано с тем, что метод rand не работает должным образом. Я подтвердил, что это, вероятно, проблема с моей настройкой, поскольку я смог протестировать тот же файл кода ruby ​​​​с тем же файлом rspec на другом компьютере, настроенном правильно, и rspec прошел все критерии. Если раньше метод rand не вызывался должным образом и в IRB, то после частичного решения (ниже горизонтальной линии) он корректно работает в IRB.

 1) valid_triangle? returns true for an equilateral triangle
 Failure/Error: length = rand(0.01..100.0)
 TypeError:
   can't convert Range into Integer
 # ./triangle_side_spec.rb:13:in `rand'
 # ./triangle_side_spec.rb:13:in `block (2 levels) in <top (required)

Следующее, введенное в мой .bash_profile, помогло. Хотя я точно не знаю, как это работает, думаю, указать RBENV на правильный локальный каталог? Я думаю, что решение было основано на этой ссылке https://gist.github.com/MicahElliott/2407918

# Path for RBENV
test -d $HOME/.rbenv/ && PATH="$HOME/.rbenv/bin:$PATH"

# Rbenv autocomplete and shims
if hash rbenv 2> /dev/null; then
  echo "Initializing rbenv"
  eval "$(rbenv init -)";
else
  echo "Can't find rbenv";
fi

Теперь я получаю красивый

ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-darwin13.4.0]

:)

person writofmandamus    schedule 25.10.2014
comment
Обратите внимание, что эти строки являются частью установки: github.com/sstephenson/rbenv#basic- github-checkout Я думаю, что Homebrew выдает сообщение об этом, но его легко пропустить. В основном вы устанавливаете папку rbenv/bin для просмотра перед вашей системной папкой на вашем пути, поэтому она получает рубин rbenv вместо системного рубина. Я бы попробовал перефразировать rspec - person Josh Bodah; 12.11.2014

Вы запускали $ rbenv rehash после установки новой версии Ruby?

Rbenv Rehash:

Устанавливает оболочки для всех исполняемых файлов Ruby, известных rbenv (например, ~/.rbenv/versions//bin/). Запустите эту команду после установки новой версии Ruby или установки драгоценного камня, предоставляющего команды.

$ rbenv rehash
person SuckerForMayhem    schedule 24.10.2014
comment
Я только что ввел эту команду и все еще получаю тот же результат. Обратите внимание, что после ввода команды rehash не возвращалось сообщение. : $ rbenv rehash $ ruby ​​-v ruby ​​1.9.2p136 (25 декабря 2010 г., редакция 30365) [x86_64-darwin10.6.0] - person writofmandamus; 25.10.2014