【问题标题】:First lesson in TestFirst Ruby CourseTestFirst Ruby 课程的第一课
【发布时间】:2013-01-05 22:47:15
【问题描述】:

我正在尝试完成 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

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

【问题讨论】:

  • rakefile 是什么样的?

标签: ruby-on-rails ruby


【解决方案1】:

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

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

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

编辑:

我发现了真正的问题。导航到 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

【讨论】:

  • 如果你得到这个错误:Could not find rspec (~> 2) amongst [...],那么你还需要安装rspec gem:$ gem install rspec
  • 另外,如果您已经为测试创建了文件 (hello.rb),但仍然收到 LoadError (cannot load such file -- hello),则目录路径中可能有空格。再次打开Rakefile 并将.gsub(' ', '\ ') 添加到lab = Rake.application.original_dir 行的末尾
【解决方案2】:

您的系统上的 gem 似乎已过期。试试:

gem update --system

【讨论】:

  • 感谢您的回复。好的,我刚刚尝试更新它,但现在我收到一条错误消息 Michaels-MacBook-Pro:00_hello TheRedFool$ gem update --system Updating RubyGems Updating ruby​​gems-update ERROR: While execution gem ... (Gem::FilePermissionError)您没有对 /Library/Ruby/Gems/1.8 目录的写入权限。知道我该如何解决吗?谢谢。
  • 也刚刚尝试了 00_hello 目录之外的更新,并得到了同样的错误。不知道到底发生了什么。
  • 在命令前执行 sudo。你需要是 root 才能更新 gem
  • 好的,刚做了,宝石更新得很好。但我仍然收到一条错误消息。也许我运行 rake 测试的语法关闭了?正确的做法是什么?
  • 能否请您添加 'rspec -v' 的输出以确保您已正确安装 rspec?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多