레일스에서 파일이 이미로드되었다고 가정하면 콘솔에서이 예제로 my_method
을 어떻게 호출 할 수 있습니까?레일에서 콘솔로 ApplicationController 메소드 호출하기
# some_file.rb
class MyClass < ApplicationController::Base
def my_method(args)
레일스에서 파일이 이미로드되었다고 가정하면 콘솔에서이 예제로 my_method
을 어떻게 호출 할 수 있습니까?레일에서 콘솔로 ApplicationController 메소드 호출하기
# some_file.rb
class MyClass < ApplicationController::Base
def my_method(args)
또 다른 매우 간단한 방법은 ApplicationController
인스턴스를 사용하는 것입니다. 다음
>> ApplicationController.new.example
이 출력됩니다 :
ApplicationController < ActionController::Base
def example
"O HAI"
end
end
그런 다음 콘솔에서, 당신은 다음과 같은 작업을 수행 할 수
O HAI
이를, 물론, 액세스를 필요가 없다는 제한이 request
객체 자체와 같이 정상적인 요청 일 것입니다.
이 당신을 위해 너무 늦은 것입니다 :이 필요한 경우 패트릭 Klingemann 제안으로, 디버거를 사용할 수 ... 나는 개인적으로 사용 올립니다 추천 , 그러나 희망을 갖고 그것은 미래에 누군가를 도울 것입니다.
아주 좋은 솔루션,보기 작성 도움말 및 컨트롤러 테스트 케이스. –
사용 디버거 : 당신의 Gemfile
추가에
: 터미널에서 다음
gem 'debugger'
:
> bundle
> rails s --debugger
컨트롤러 액션에서 당신이 타격있어 :
class WidgetsController < ApplicationController
def index
debugger
@widgets = Widget.all
respond_with @widgets
end
end
브라우저를 가리켜 : http://localhost:3000/widgets
, 페이지로드가 완료되지 않습니다. 서버가 실행중인 터미널로 돌아가서 다음을 실행할 수있는 대화 형 디버깅 세션에있게됩니다. my_method
사실 저는 디버깅을 잊어 버렸습니다. 그런 식으로 서버를 시작하는 메소드에 액세스 할 수는 없습니다. 당신은 레일즈 --debugger를 필요로 할 것입니다. 그리고 그 경우조차도 당신이 얻는 유일한 응답은 "그냥 ApplicationController 메소드를 쳤습니다"입니다 ... 실제 출력이 없습니다 – Daniel
제가 잠들었을 때 --debugger를 생각했습니다. 좋은 지적. 나는 당신의 코멘트에서 두 번째 문장을 이해하는지 모르겠습니다. –
글쎄, 마틴이 우리를 위해 준비한 케이스를 재현 해 보았습니다.하지만 내가 얻은 것은 그 메시지입니다 ... 나는 그것을 호출 할 때 실제로 어떻게 내부에서 진행되고 있는지를 확인할 수 없다는 것을 의미합니다. 나는 뭔가 잘못하고있을 수도 있습니다. – Daniel
정확히 묻는 질문이 아니지만 debugger
과 마찬가지로 pry
보석을 사용하여 디버깅 할 수도 있습니다. Gemfile
에
추가 : 방법에
gem "pry"
gem "pry-remote"
gem "pry-stack_explorer"
gem "pry-debugger"
:
def myMethod
binding.pry
# some code
end
을 완료!
메서드를 실행하면 페이지 처리가 binding.pry
으로 고정되고 프롬프트가 표시됩니다. 메서드의 각 단계마다 n
을 입력하고 "실시간"으로 인쇄 할 수있는 변수를 가지고 놀아주세요!
실제로 흥미로운 것 같습니다.하지만 내 생각은 컨트롤러 내부의 모든 메소드가 뷰에 의해 액세스된다는 것입니다.콘솔에 액세스하면 ActiveRecord에 액세스하여 모델 및 메서드에 액세스 할 수 있습니다. 내가 말했듯이 이것이 내 생각 일 것입니다. – Daniel
http://stackoverflow.com/q/151030/2355112에는 동일한 문제에 관한 정말 좋은 답변이 있습니다. – oozzal