2011-12-17 9 views
1

私は、Ruby 1.9.2とレール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

チェック "-e、--exclude [テスト、什器]は備品、テストファイル、またはその両方に注釈を付けないでください" と言うannotate -hにつながります.com/questions/7295505/annotate-gem-and-rails-3-1 – mask8

+0

問題を解決していただきありがとうございます!あなたが答えとして追加するなら、私は受け入れてそれを閉じることができます。 – Tabrez

答えて

0

-eフラグには、指定されていない引数が必要です。

スタックトレースを見ると、nilにはeachというメソッドがないというエラーが表示されます。 optparseファイルでエラーが発生しているので、存在しなかったオプションに対してoptparseが反復しようとしたことを推論することができます。 ます。http:// stackoverflowのそれは、当然のことながら、この1

+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:Module(NoMethodError)のために呼び出されるプライベートメソッド 'load' \t /Users/mymachine/.rvm/gems/ruby-1.9.2-p290/gems/annotate-2.4.0/bin/annotate:28 : 'ブロック(2レベル)'で ' ...思考? – Tabrez

+0

少し見渡しましたが、この宝石の作者は彼らがそれを書いたときにルビーの生態系を理解していませんでした。 gemを開き、lib/annotate/annotate.rbに 'require 'yaml'を貼り付けることによって、バージョンを動作させることができます。これはpre bundlerなので、依存関係を管理しないので、テストを実行する前に別のrspecを試してみる必要があります(RSpec 1でテスト済みです)。予想していたActiveSupportのバージョンも古いですが、バージョン2.3.14でテストに合格することができました また、Rails 2.3.5プロジェクトに注釈を付けることもできました。新しいものに挑戦しなかった。 –

+0

ありがとうジョシュア。私はそれがうまくいくかもしれないと思うが、私は別の解決策をとった。 mask8は、同じ問題について別のスレッドにリンク(上記参照)を投稿しました。その答えは、2.4.0バージョンの宝石の代わりに2.4.1.betaを使用することでした。私はそれを試み、それもそれを解決しました。しかし、このソリューションも共有していただきありがとうございます。ベータ版に問題がある場合は、今私は何をすべきか知っています! – Tabrez