2013-01-05 65 views
3

我正在嘗試完成TestFirst.org learn_ruby課程,並且我被卡在第一課的開頭。TestFirst 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 

任何幫助將不勝感激。提前致謝!

+1

rakefile是什麼樣的? –

回答

1

看起來gem在您的系統上已過期。嘗試:

gem update --system 
+0

感謝您的回覆。好吧,我只是嘗試更新它,但現在我得到一個錯誤信息 邁克爾 - 的MacBook-PRO:00_hello --system 更新RubyGems的 更新RubyGems的更新 ERROR TheRedFool $寶石更新:在執行寶石...( Gem :: FilePermissionError) 您沒有寫入/Library/Ruby/Gems/1.8目錄的權限。 任何想法如何解決這個問題?謝謝。 – PaperKraftMike

+0

也只是嘗試了00_hello目錄之外的更新,並得到了相同的錯誤。不知道到底發生了什麼。 – PaperKraftMike

+0

在命令前執行sudo。你需要成爲root用戶來更新寶石 – bootstraps

3

我得到它使用rspec而不是耙子工作。我以這種方式完成了第一課。

[email protected]:~/.../00_hello$ rspec -r hello_spec.rb 

我認爲耙子不認識RubyGems,但我不知道爲什麼。我使用Ubuntu,所以Debian可能與它有關。無論如何,rspec應該是一個足夠的替代品,直到rake得到修復。

編輯:

我想通了真正的問題。導航到主Test First Ruby文件夾,然後在文本編輯器中打開Rakefile。上面寫着gem 'rspec', '~>2'的一個前加入這一行:

require 'rubygems' 

此行是不是在1.9.1必要的,但你和我正在運行1.8。

如果由於某種原因仍然無法爲你工作,你可以在運動的文件夾使用此命令,它應該做同樣的事情打字rake,但沒有錯誤:

[email protected]:~/.../00_hello$ rspec -I. -f d -r ../rspec_config *_spec.rb 
+0

如果你得到這個錯誤:'找不到rspec(〜> 2)',那麼你還需要安裝rspec gem:'$ gem install rspec' – wolverdude

+0

另外,如果你創建了測試文件('hello.rb')並且仍然得到一個LoadError('無法加載這樣的文件 - hello'),你可能在目錄路徑中有空格。再次打開'Rakefile'並在'lab = Rake.application.original_dir'這一行的末尾添加'.gsub('','\')'' – wolverdude