3

我正在尝试完成 TestFirst.org learn_ruby 课程,但我被困在第一个课程的开头。

我在目录中打开一个终端窗口00_hello,就像说明所说的那样。但是当我去运行第一个测试“rake”(它应该在它通过之前失败几次)时,我收到一条奇怪的错误消息,我似乎无法追踪。

Michaels-MacBook-Pro:00_hello TheRedFool$ rake
(in /Users/TheRedFool/learn_ruby-master)
rake aborted!
undefined method `gem' for main:Object
/Users/TheRedFool/learn_ruby-master/Rakefile:2
(See full trace by running task with --trace)

然后当我使用跟踪运行它时。

Michaels-MacBook-Pro:00_hello TheRedFool$ rake --trace
(in /Users/TheRedFool/learn_ruby-master)
rake aborted!
undefined method `gem' for main:Object
/Users/TheRedFool/learn_ruby-master/Rakefile:2
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2383:in `load'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2383:in `raw_load_rakefile'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2017:in `load_rakefile'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2016:in `load_rakefile'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2000:in `run'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:2068:in `standard_exception_handling'
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/rake.rb:1998:in `run'
/usr/bin/rake:31

任何帮助将不胜感激。提前致谢!

4

2 回答 2

3

我使用 rspec 而不是 rake 让它工作。我就这样顺利地完成了第一节课。

jrw@mobile0:~/.../00_hello$ rspec -r hello_spec.rb

我认为 rake 无法识别 RubyGems,但我不确定为什么。我正在使用 Ubuntu,所以Debian可能与它有关。无论如何, rspec 应该是一个足够的替代品,直到 rake 得到修复。

编辑:

我发现了真正的问题。导航到 Test First Ruby 主文件夹并Rakefile在文本编辑器中打开。在以下行之前添加这一行gem 'rspec', '~>2'

require 'rubygems'

这行在 Ruby 1.9.1 中不是必需的,但你和我正在运行 1.8。

如果由于某种原因仍然对您不起作用,您可以在练习文件夹中使用此命令,它应该与键入完全相同rake,但不会出现错误:

jrw@mobile0:~/.../00_hello$ rspec -I. -f d -r ../rspec_config *_spec.rb
于 2013-01-20T22:20:55.167 回答
1

Looks like gem is out of date on your system. Try:

gem update --system
于 2013-01-05T22:59:22.470 回答