我的代码中有错误,我认为这是因为使用了旧的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,并且在我的系统中没有任何跟踪它。
我使用的是Homebrew:
$ brew update
Already up-to-date.
使用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版本并且没有看到任何其他版本。
我还在rbenv global 2.0.0-p481
输入了我的终端,没有发现任何问题或其他返回消息。
但是,下面是我的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版
$ 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?如果有其他信息我可以告诉我,以帮助您解决此问题。
答案 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已知的所有Ruby可执行文件安装填充程序(即〜/ .rbenv / versions / / bin / )。安装新版本的Ruby后运行此命令,或安装提供命令的gem。
$ rbenv rehash