Ruby on Rails에서 실행 중에 컨트롤러 변수의 값을 결정하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/60720

문제

실행 중에 컨트롤러 변수의 값을 결정하는 가장 좋은 방법은 무엇입니까?

예를 들어, 코드에 중단을 삽입하고 변수 값이 화면(또는 로그)에 출력되도록 할 수 있는 방법이 있습니까?

도움이 되었습니까?

해결책

예.가장 쉬운 방법은 값을 문자열로 높이는 것입니다.다음과 같습니다: raise @foo.to_s

또는 디버거를 설치할 수 있습니다(gem install ruby-debug), 그런 다음 다음을 사용하여 개발 서버를 시작합니다. --debugger 깃발.그런 다음 코드에서 debugger 지침.

디버거 프롬프트에는 다음을 포함한 많은 명령이 있습니다. p 변수의 값을 인쇄합니다.

업데이트: 여기 루비 디버그에 대해 조금 더.

다른 팁

이름이 지정된 컨트롤러 인스턴스 변수가 있는 경우 @foo, 그러면 컨트롤러에서 간단히 다음과 같은 작업을 수행할 수 있습니다.

logger.debug "@foo is: #{@foo}"

또한 다음을 사용하여 뷰 템플릿에 값을 출력할 수 있습니다.

<%= debug @foo %>

나는 다음과 같이 검사 방법을 사용하는 것을 선호합니다:

raise @foo.inspect

속성 값과 같이 to_s보다 더 많은 정보가 있습니다.

Jordi Bunster, John Topley 및 Jaryl의 요약:

나.빠르고 더러운 방법:

raise @foo.inspect

컨트롤러에서.또는

<% raise @foo.inspect %>

당신의 견해로는.

II.당신에게 올바른 로그인 development.log:

logger.debug "@foo == #{@foo.inspect}"

III. 본격적인 디버깅:

디버거를 설치합니다(gem install ruby-debug), 그런 다음 다음을 사용하여 개발 서버를 시작합니다. --debugger 깃발.그런 다음 코드에서 debugger 지침.

디버거 프롬프트에는 다음을 포함한 많은 명령이 있습니다. p 변수의 값을 인쇄합니다.

값만 확인해야 하는 경우 예외를 발생시키는 것이 가장 빠른 방법이지만 디버거를 올바르게 사용하는 방법을 배우는 데는 시간을 투자할 가치가 있습니다.변수의 값만 확인하면 되는 경우는 거의 없으며 코드에서 버그를 찾으려고 할 가능성이 높으며 이것이 디버거의 목적입니다.

디버거 사용 방법을 배우는 경우(로그 파일을 읽고 싶은 사람) 개발 로그에 정보를 보내는 것은 지금까지 여기에 있는 다른 두 가지 옵션 중 하나보다 느립니다.생산을 위해 로거를 사용하면 누군가가 전화해서 모든 것이 망가졌다고 말할 때 그 가치가 무엇인지 확인하고 싶을 것입니다.

글쎄요, 저는 보통 표준 오류 출력을 선호합니다

$stderr.print("무엇이든")

간단하고 작업을 수행합니다.

  1. 추가하다 들어 올리기 Gemfile로: gem 'pry-moves'
  2. 끼워 넣다 binding.pry 멈추고 싶은 곳
  3. 변수 이름을 입력하여 해당 값을 확인하세요.

그런 다음 계속 입력하세요. c, 다음 줄로 이동 n 또는 문제가 해결될 때까지 다른 디버깅 작업을 수행하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top