복붙노트

[RUBY-ON-RAILS] 레일 eager_load_paths VS autoload_paths 대해 혼란 4

RUBY-ON-RAILS

레일 eager_load_paths VS autoload_paths 대해 혼란 4

여기 링크입니다, 레일 load_paths에 대한 게시물을 읽어 보시기 바랍니다.

하지만, 난 여전히 autoload_paths와 eager_load_paths의 차이에 대해 혼란 스러워요 :

나는 새로 만든 레일 4 프로젝트를 테스트했습니다. 그들이 같은 방식으로, 개발 모드에서하지만 생산 모드가 자동으로 다시로드를 실행하는 것이 보인다.

해결법

  1. ==============================

    1.여기에 링크 된 기사의 저자. 여기 fkreusch의 대답 @으로 떨어져가는 혼란을 정리하기위한 시도이다.

    여기에 링크 된 기사의 저자. 여기 fkreusch의 대답 @으로 떨어져가는 혼란을 정리하기위한 시도이다.

    루비에서는 해당 코드 실행을하기 위해 모든 .rb 파일이 필요합니다. 그러나, 통지 방법 레일에 당신은 특히 응용 프로그램 / 디렉토리에 모델, 컨트롤러, 또는 다른 파일 중 하나를 필요로하지 않습니다. 왜 그런 겁니까? 레일에서 응용 프로그램 / *이 autoload_paths에 있기 때문이다. 이 방법 당신은 (레일 콘솔을 통해 예를 들어) 당신의 레일 개발에 응용 프로그램을 실행하는 것이 때 - 모델 및 컨트롤러 중 어느 것도 실제로 루비 아직에 의해 필요하지 않습니다. 실제로 코드가 상수를 언급 할 때까지 기다리 책 말, 오직 그때는 그것이 autoload_paths 중 하나에서 찾은 '책'을 필요로 실행됩니다에 레일 루비의 특별한 마법 기능을 사용합니다. 당신이 그것을 시작할 때 아무것도 코드가 실제로 필요로하는 경우에만 필요하지 도착하기 때문에, 당신에게 빠른 콘솔 및 개발 서버 시작을 제공합니다.

    자,이 동작은 무엇 생산에 대한 지역 개발을위한 좋은,하지만? 생산에 서버가 마법의 일정 하중 (자동 로딩)의 동일한 유형을한다는 것을 상상해보십시오. 정말 세상의 끝이 아니다, 당신은 생산에 서버를 시작하고, 사람들은 파일 중 일부가 자동으로 적재 될 필요가 있기 때문에, 약간 느린 페이지를 탐색 시작합니다. 네, 서버 동안 "따뜻하게까지", 그 몇 가지 초기 요청에 대한 느린, 그러나 나쁜 것이 아니다. 이야기의 끝이 아닙니다 것을 제외하고.

    (내가 정확히 기억 경우) 루비 1.9.x에서 실행중인 경우, 그와 같은 자동 필요로하는 파일은 스레드로부터 안전하지 않습니다. 당신이 퓨마와 같은 서버를 사용하는 경우 그래서, 당신은 문제가 실행됩니다. 당신은 멀티 스레드 서버를 사용하지 않는 경우에도, 당신은 아마 더 나은 전체 응용 프로그램 시작시, "적극적으로"요구받을 필요 오프 여전히. 이 수단 생산, 모든 완전히 앱을 시작으로 필요하고 더 이상 시작 시간을 신경 쓰지 않는 등 각 모델마다 컨트롤러를 원하는. 이것은 열망로드라고합니다. 모든 루비 파일을 열망로드 얻을, 그것을 얻을? 그러나 당신이 할 수있는 방법, 당신의 레일 응용 프로그램은 하나의 문이 필요없는 경우? 디렉토리가 그 경로를 아래 모두 당신이 그들에 넣어 eager_load_paths가. 무엇이든에 와서 그의 모든 파일은 생산 시작시 필요합니다. 이 그것을 정리할 바랍니다.

    그것은 단지 생산, 그래서 당신이 그들에 넣어 무엇을 열심히 개발에 즉시 필요하지 않습니다, eager_load_paths는 개발 환경에서 활성화되지 않은 것을주의하는 것이 중요합니다.

    그냥 autoload_paths에 뭔가 퍼팅이 열망로드 생산하지 않습니다 참고하는 것도 중요합니다. 운수 나쁘게. 명시 적으로 eager_load_paths으로뿐만 아니라를 넣어해야합니다.

    또 다른 흥미로운 특질은 모든 레일 애플 리케이션에서, 응용 프로그램 아래에있는 모든 디렉토리 / 디렉토리를 추가하는 것은 더 이상의 조치가 필요하지 않다는 의미 autoload_paths 및 eager_load_paths 모두 자동 있다는 것입니다.

  2. ==============================

    2.기본적으로, autoload_paths 레일이 자동으로 클래스를로드하려고하는 데 사용할 경로입니다. 예를 들면 당신이 도서를 호출 할 때 그 클래스가 아직로드되지 않은 경우, 그것은 그 경로에 대한 autoload_paths와보기를 통해 이동합니다.

    기본적으로, autoload_paths 레일이 자동으로 클래스를로드하려고하는 데 사용할 경로입니다. 예를 들면 당신이 도서를 호출 할 때 그 클래스가 아직로드되지 않은 경우, 그것은 그 경로에 대한 autoload_paths와보기를 통해 이동합니다.

    생산, 피할 동시 문제를 자동로드에 그 선행을로드하는 것이 좋습니다 수 있습니다. 이를 위해, 그것은 eager_load_paths을 제공합니다. 이 목록의 경로는 응용 프로그램 시작을 선행 할 때 필요합니다.

  3. from https://stackoverflow.com/questions/19773266/confusing-about-autoload-paths-vs-eager-load-paths-in-rails-4 by cc-by-sa and MIT license