4

나는이 튜토리얼에 따라 보석/엔진을 만들었습니다 : 새로 만든 응용 프로그램에서 보석을 사용하려고 할 때레일 3 보석을 어떻게 디버깅합니까?

http://www.themodestrubyist.com/2010/03/05/rails-3-plugins---part-2---writing-an-engine/

는 그러나, 나는 오류를 얻고있다. 응용 프로그램에 액세스하려고 할 때 "nil : NilClass"에 대해 "라우팅 오류 - 정의되지 않은 메서드 '하위'가 나타납니다.

로그 파일에서 볼 수있는 유일한 오류는 동일한 오류입니다. 스택 추적/디버그 추적이 없으므로 오류의 출처를 파악하기 어렵습니다. 이상적으로 "보석에서"스택 추적을보고 싶습니다. 그러나 레일이 응용 프로그램 외부에서 발생한 오류를 디버깅하지 않는 것으로 보입니까?

저는 rvm, ruby ​​1.9.2, 3.0.1 레일을 사용하고 있습니다. 내가 디버그 메시지에서 알 수 있듯이이 라우팅 오류라고 생각하지 않지만 여기

는 ..

Rails.application.routes.draw do 
    resources :pictures, :controller => 'morph/pictures' 
end 

어떤 제안 보석에서 내 설정/routes.rb 파일?

답변

2

콘솔에 백 트레이스가 있습니까?

추가 출력을 찾을 수없는 경우 '디버거'문을 앱 시작 부분에두고 오류가 나타날 때까지 소스 코드를 단계별로 실행할 수 있습니다.

gem/plugin 소스에서도 동일한 작업을 수행 할 수 있습니다.

편집 : 저자는 기사 하단에 데모 코드에 대한 링크가있는 것으로 보입니다. 유용 할 수도 있습니다.

14

당신이 config/initializers/backtrace_silencers.rb

Rails.backtrace_cleaner.remove_silencers! 

의 주석을 해제하는 경우가 더 완전한 스택 트레이스를 표시합니다. 그것은 나를 위해 일했습니다.

+1

이 대답에 대해 더 많은 점수를 줄 수 있기를 바랍니다. 이것은 나에게 큰 도움이됩니다. –

+0

나는 위의 제안을 시도했지만 어떤 보석이 내 응용 프로그램에서이 오류를 일으키는 지 여전히 알 수 없다.'DEPRECATION WARNING : alias_method_chain은 더 이상 사용되지 않습니다. 대신 Module # prepend를 사용하십시오. 모듈에서 super를 사용하여 원본 메소드에 액세스 할 수 있습니다. (<필수 (필수)> /srv/rails/my_app/config/application.rb:7에서 호출) ' –

+0

@ W.M. 그건 단지 비추천 경고 일 뿐이니까, 당신은 그것의 역 추적을하지 않을 것입니다. 난 그냥 귀하의 보석 폴더에 가서'alias_method_chain'을 사용하여 보석 코드에 대한 전체 텍스트 검색을 할 것입니다. – lukeasrodgers