레일스 네임 스페이스 및 모듈 조회에 관한이 글을 정말 잘 읽고 있습니다. HereRails와 Ruby 네임 스페이스 규칙.
나는 이것이 무엇을 의미하는지 이해하지 않는다 : 그들은 처음 런타임에 발생하는 경우에만 때 상수는 다음 필요성 자신의로드 순서에 의해,로드
경우 개별 실행 경로에 따라 달라집니다.
individual execution path
은 무엇입니까?
나는 비 이해 생각이 이해하지 않는 날 리드 :
을 즉시 이미로드 일정 바즈가 발생 될 때, 레일은 찾고있는 바즈 수 없습니다 이 알고, 그리고 알고리즘이 NameError를 발생시킵니다.
또는 더 중요한 것은이 :
처음, 이전, 아래로 중첩 정보의 손실이다. 레일즈는 Foo :: Qux가 우리가 쫓아 가고 있다는 것을 알 수 없으므로 일단 이 Foo :: Bar :: Qux가 존재하지 않는다는 것을 깨닫게되면 행복하게로드합니다.
그러나 두 번째로 Foo :: Qux가 이미로드되었습니다. 그래서 우리의 레퍼런스는 그 상수가 될 수 없었습니다. 그렇지 않으면 Ruby는 을 해결할 것이고, 자동 로딩은 절대로 호출되지 않을 것입니다. 그래서 우리의 참조가 일 수 있고 (아직) un-yet-unloaded :: Qux로 해결되었을지라도 룩업은 NameError로 종료됩니다.
왜 이미로드 된 상수가 레일을 사용하지 않습니까? 또한 실행하는 이유는 무엇입니까?
Foo::Bar.print_qux
두 번 다른 결과가 나옵니까?