终端中显示的Ruby版本与“已安装”版本不同

时间:2014-10-24 19:31:13

标签: ruby version rbenv

我的代码中有错误,我认为这是因为使用了旧的Ruby版本。例如,当我在IRB环境中键入rand(0.01..100.0)时,我得到了这个:

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时所做的。请注意,之前我已经在我的Macbook上安装了RVM(现在使用rbenv),但我相信我已经完全卸载了RVM,并且在我的系统中没有任何跟踪它。

  1. 我使用的是Homebrew:

    $ brew update   
    Already up-to-date.
    
  2. 使用rbenv安装Ruby:

    $ 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版本

  5. $ 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版

    $ 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?如果有其他信息我可以告诉我,以帮助您解决此问题。

2 个答案:

答案 0 :(得分:1)

以下部分(水平线以下)有助于解决我相信问题的关键,但我仍然有一些挥之不去的问题。其中一个症状是运行rspec时的症状。似乎还必须使用rand方法不能正常工作。我确认这可能是我的设置问题,因为我能够在另一台正确设置的计算机中使用相同的rspec文件测试我的相同ruby代码文件并且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]

:)

答案 1 :(得分:0)

安装新的Ruby版本后,您是否运行了$ rbenv rehash

Rbenv Rehash

  

为rbenv已知的所有Ruby可执行文件安装填充程序(即〜/ .rbenv / versions / / bin / )。安装新版本的Ruby后运行此命令,或安装提供命令的gem。

$ rbenv rehash
相关问题