2009-09-01 4 views
28

내 주요 Sinatra 컨트롤러에서 폼에서 POST 된 후 params 해시를 디버깅하려고합니다.Rails 앱과 같은 Sinatra 앱을 어떻게 디버그합니까?

는 내가 추가 한 :

puts params.inspect 

set :logging, :true 

params.inspect 작품 모두가 잘 어울리는 경우. 그러나 컨트롤러가 실행되기 전에 오류가 발생하면 기본적으로 레일즈에서와 같이 오류에 대한 정보를 얻지 못합니다.

유용한 디버그 정보를 얻는 가장 좋은 방법은 무엇입니까?

(이 코드를 추가 한 후 응용 프로그램도 시작되지 것) 전혀 작동하지 않았다

This example :

configure do 
    Log = Logger.new("sinatra.log") 
    Log.level = Logger::INFO 
end 

다음 :

Log.info "#{@users.inspect}" 
+1

상속 된 sinatra 코드에. erb (또는 haml) 파일 내에서'''<% p params %>'''본문에 쓰여진 다른 것의 바로 위에. 매개 변수가 콘솔에 나타납니다. – coderek

답변

19

필터링하기 전에 추가 시도해 볼 수도를 그 매개 변수를 인쇄합니다.

before do 
    puts '[Params]' 
    p params 
end 
+0

인상'에 대해이 작업을 수행했다 방법 –

1

내가 추측하고있어, 당신은 당신이 :: 자료를시나를 서브 클래스보다는 고전적인 (최상위)시나 앱을 사용하는 의미 이상의 있습니다. 이것이 사실이라면 Sinatra가 수행하는 많은 기본 오류 처리가 기본적으로 사용되지 않습니다.

클래스 정의에 set :show_exceptions, true if development?을 포함하면 내부 서버 오류 대신 스택 추적, params 등이 포함 된 오류 페이지가 나타납니다. 또 다른 옵션은 set :raise_errors, false이며 그 중 하나가 오류를 발생시킬 때마다 실행되는 error do ... end 블록을 포함합니다.

3

나는 ruby-debug를 사용하는 것이 좋습니다. 4 개 또는 5 개의 기본 명령을 배우고 나면 설정하고 사용하기가 매우 쉽습니다. IRB에서와 같이 매개 변수를 검사하고 대화식으로 재생하려는 중단 점을 설정할 수 있습니다.

13

제 생각에는 디버그의 경우 구성 :development do를 사용해야합니다.이 시나리오에서는 일부 디버깅 플래그가 켜져 있기 때문입니다. 역 추적 여부를

  • dump_errors 옵션 컨트롤 :

    enable :logging, :dump_errors, :raise_errors 
    

    및 로깅 기능에 대한 : 다음시나 핸드북에서

    log = File.new("sinatra.log", "a") 
    STDOUT.reopen(log) 
    STDERR.reopen(log) 
    

    그래서, 당신의 configure do 블록에서 당신은 플래그를 활성화 할 수 있습니다 경로에서 예외가 발생하면 rack.errors으로 덤프됩니다. 이 옵션은 최상위 수준 앱에 기본적으로 사용하도록 설정되어 있습니다.

  • raise_errors - 예외가 앱 외부로 전파되도록 허용 (...) :raise_errors 옵션은 클래식 스타일 앱에서는 기본적으로 비활성화되어 있으며 Sinatra :: Base 하위 클래스에서는 기본적으로 사용하도록 설정되어 있습니다.

나는 또한 내 컨트롤러의 중앙에

puts "something" + myvar.inspect 

방법을 사용합니다.

10

@jshen이 말한 것처럼 루비 디버그는 아주 좋은 도구입니다.

시나에서 사용하기 위해 디버깅을 시작하고 싶습니다

require 'ruby-debug/debugger' 

를 삽입합니다.

8

Pry 또는 Ruby 디버거를 사용하는 것이 좋습니다. Pry를 사용하면 명령 행을 사용하여 bash에서와 같이 메소드와 변수를 탐색 할 수 있습니다.

"How to use Pry with Sinatra?"을 참조하십시오.

+0

이것은 사용 가능한 sinatra 응용 프로그램을 디버깅하는 데 가장 유용한 방법입니다. – three

1

나는 debugger 보석을 사용하는 것이 좋습니다 것 : 여기

enter image description here

는 REPO입니다. 주시나에서 실행하여

bundle 
  • 를 보석을 설치

    1. 이 Gemfile

      gem "debugger" 
      
    2. 에 보석을 추가

      은시나의 응용 프로그램과 함께이를 사용하려면 앱 파일, 추가

      이제 디버깅
      require 'debugger' 
      
    3. , 당신은 당신의 코드에서 다음 줄 어디서나

      debugger 
      

      을 추가해야합니다.

      코드가 실행되고 있으며 debugger가 볼

    등 코드 중지 것이다 당신은 (eval 사용) 변수, 실행 명령을 검사 할 수 있습니다

    params`
  • 관련 문제