2011-12-17 2 views
1

저는 루비 1.9.2와 레일 3.1이 있습니다. 나는 annotate 2.4.0을 작동 시키려고 노력하고 있지만, nomethod 에러가 발생한다. 제거하고 다시 설치하려고했지만 도움이되지 않았습니다. 점프 후 스풀을보십시오. 진행 방법에 대한 제안 사항이 도움이 될 것입니다.Annotate는 다른 방법으로 오류를 발생합니다.

~/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 [테스트, 비품] 설비, 테스트 파일, 또는 두 가지 모두에 주석을하지 마십시오" .com/questions/7295505/annotate-gem-and-rails-3-1 – mask8

+0

문제를 해결해 주셔서 감사합니다! 대답으로 추가하면 받아 들일 수 있고 닫을 수 있습니다. – Tabrez

답변

0

-e 플래그는 사용자가 지정하지 않은 인수를 필요로합니다.

스택 추적을 보면 알 수 있습니다. nil에는 방법이 없습니다. each입니다. optparse 파일에서 오류가 발생하기 때문에 optparse가 존재하지 않는 일부 옵션을 반복하려고 시도했음을 추론 할 수 있습니다. HTTP : // 유래 즉, 물론,라는 annotate -h로 연결

+0

Joshua - 답장을 보내 주셔서 감사합니다. 그 자체로 문제가 될 수 있지만, 나는 그 주장을 제공 한 후에도 명령이 실행되지 않습니다. 아마도 올바른 오류 메시지를 얻는 데 도움이됩니다. 유일한 명령은 "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': Module (NoMethodError) \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'을 고침으로써 버전이 작동하도록 할 수 있습니다. 그것은 사전 번들러이므로 종속성을 관리하지 않아 테스트를 실행하기 전에 다른 rspec을 시도해야합니다 (RSpec 1에서 테스트 됨). 기대하는 ActiveSupport의 버전도 오래되었으므로 버전 2.3.14와 함께 테스트를 통과 할 수있었습니다. 레일즈 2.3.5 프로젝트에 주석을 추가했습니다. 더 새로운 것에 대해서는 시도하지 않았습니다. –

+0

고마워요 조슈아. 나는 그것이 효과가있을 것이라고 생각하지만 나는 다른 해결책을 찾아 갔다. mask8은 동일한 문제에 대한 링크를 다른 스레드에 게시했습니다 (위 참조). 그 대답은 2.4.0 버전의 보석 대신 2.4.1.beta를 사용하는 것이 었습니다. 나는 그것을 시도하고 그것을 또한 해결했다. 하지만이 솔루션을 공유해 주셔서 감사합니다. 베타 버전에 문제가있는 경우 이제 어떻게해야할지 알 수 있습니다. – Tabrez

관련 문제