2014-09-26 1 views
2

이 레일 콘솔에서 일어나는 이유에 그냥 궁금 :응용 프로그램 컨트롤러에 하위 클래스가 없습니다?

Loading development environment (Rails 4.1.5) 
2.1.2 :001 > require 'application_controller' 
=> true 
2.1.2 :002 > ApplicationController 
=> ApplicationController 
2.1.2 :003 > ApplicationController.subclasses 
=> [] 
2.1.2 :004 > ::ApplicationController.descendants 
=> [] 

내가

class MyController < ApplicationController 
end 

그래서 내가 ApplicationController.subclasses #=> [MyController]을 기대하고있어이 컨트롤러는, 그러나, 나는 하늘의 배열을 얻고있다 :(

+2

이 답변과 첫 번째 의견은 당신에게 흥미 로울 것입니다. http://stackoverflow.com/a/1564401/976775 – MrYoshiji

+0

lazy-loading. –

+0

@MrYoshiji : 생산 모드'rails c -e production'에서 같은 것을 시도해 보았고 똑같은 결과를 얻었습니다.'[]' –

답변

2

음, 신용 MrYoshiji에 간다, 그러나 여기 당신이 서브 클래스 :

Loading development environment (Rails 4.1.5) 
2.1.2 :001 > require 'application_controller' 
=> true 
2.1.2 :001 > require 'my_controller' 
=> true 
2.1.2 :002 > ApplicationController 
=> ApplicationController 
2.1.2 :003 > ApplicationController.subclasses 
=> [MyController] 
표시 방법

지연로드는 런타임 중에 객체가 메모리에 존재하지 않을 때까지는 객체가 메모리에 존재하지 않는다는 것을 의미합니다. 두 번째 명령 인 require 'my_controller은 ApplicationController의 하위 클래스를 적극적으로 참조하므로 .subclass 메서드를 사용하여 해당 하위 클래스를 나열 할 때 나타납니다.

관련 문제