我正在尝试完成 TestFirst.org learn_ruby 类(class),但我在第一个类(class)开始时被卡住了。

我在 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

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

最佳答案

我使用 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

关于ruby-on-rails - TestFirst Ruby 类(class)的第一课,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14177246/

10-15 13:10