2011-12-17 110 views
1

我有紅寶石1.9.2和rails 3.1。我試圖讓註釋2.4.0工作,但我得到了nomethod錯誤。我試過卸載並重新安裝,但沒有幫助。跳轉後請看看線軸。有關如何繼續的任何建議將有所幫助。註釋給Nomethod錯誤

~/myapps/testapp/app>sudo gem install annotate 
Fetching: annotate-2.4.0.gem (100%) 
Successfully installed annotate-2.4.0 
1 gem installed 
~/myapps/testapp/app>bundle exec annotate -e -p before 
/Users/mymachine/.rvm/gems/ruby-1.9.2-p290/gems/annotate-2.4.0/bin/annotate:61:in block (2 levels) in <top (required)>': undefined methodeach' for nil:NilClass (NoMethodError) 
from /Users/mymachine/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/optparse.rb:1308:in call' 
from /Users/mymachine/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/optparse.rb:1308:inblock in parse_in_order' 
from /Users/mymachine/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/optparse.rb:1264:in catch' 
from /Users/mymachine/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/optparse.rb:1264:inparse_in_order' 
from /Users/mymachine/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/optparse.rb:1258:in order!' 
from /Users/mymachine/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/optparse.rb:1349:inpermute!' 
from /Users/mymachine/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/optparse.rb:1370:in parse!' 
from /Users/mymachine/.rvm/gems/ruby-1.9.2-p290/gems/annotate-2.4.0/bin/annotate:8:in' 
from /Users/mymachine/.rvm/gems/ruby-1.9.2-p290/bin/annotate:19:in load' 
from /Users/mymachine/.rvm/gems/ruby-1.9.2-p290/bin/annotate:19:in' 
+2

檢查這一項: 的http://計算器.com/questions/7295505/annotate-gem-and-rails-3-1 – mask8 2011-12-17 17:05:40

+0

謝謝你解決了這個問題!如果您將其添加爲答案,我可以接受並將其關閉。 – Tabrez 2011-12-17 20:25:45

回答

0

-e標誌需要的參數,你沒有給出。

您可以通過查看堆棧跟蹤來判斷,錯誤是nil沒有方法each。由於錯誤在optparse文件中引發,因此您可以推斷optparse試圖迭代某個不存在的選項。這當然會導致一個annotate -h它說「-e,--exclude [測試,燈具]不要註釋夾具,測試文件,或兩者」

+0

約書亞 - 感謝您的回覆。雖然這本身可能是個問題,但即使在我提供這些參數後,該命令也不會運行。它的確有助於獲得正確的錯誤信息。唯一有效的命令是「annotate -h」。如果我給annotate -v,這是我看到的:'/Users/mymachine/.rvm/gems/ruby-1.9.2-p290/gems/annotate-2.4.0/lib/annotate.rb:8:in'版本':調用YAML的專用方法'load':模塊(NoMethodError) \t from /Users/mymachine/.rvm/gems/ruby-1.9.2-p290/gems/annotate-2.4.0/bin/annotate:28 :在'' ...想法?? – Tabrez 2011-12-17 20:11:29

+0

有一點四處張望,而且這個寶石的作者在寫它的時候並不瞭解ruby生態系統。你可以通過打開gem並在lib/annotate/annotate.rb中粘貼一個'require'yaml'來讓版本工作。它是預打包程序,所以它不管理它的依賴關係,導致我必須先嚐試不同的rspecs,然後才能運行測試(使用RSpec 1進行測試)。它所期望的ActiveSupport版本也很舊,我能夠通過2.3.14版本的測試通過。 我也注意到了一個Rails 2.3.5項目。沒有試圖反對任何新的東西。 – 2011-12-17 20:45:41

+0

謝謝約書亞。我認爲這可能會奏效,但我採用了另一種解決方案。 mask8向另一個線程發佈了關於相同問題的鏈接(參見上文)。答案是使用2.4.1.beta而不是2.4.0版本的gem。我試過了,它也解決了它。但是,感謝您分享這個解決方案。如果測試版存在問題,現在我知道該怎麼做! – Tabrez 2011-12-17 21:12:00