2012-06-26 2 views
0
ENV['RAILS_ENV'] ||= "development" 
require File.dirname(__FILE__) + '/../../../config/boot' 
require File.join(Rails.root, 'config/environment') 

이것은 내 레일 어플리케이션의 초기 부분입니다. 누구든지이 세 줄의 목적이 무엇인지 설명 할 수 있습니까?레일 초기화 프로세스

+1

설정되지 않은 경우 처음으로 환경을 "개발"로 설정합니다. 두 번째 것은'config/boot.rb'를로드합니다. 셋째로'config/environment.rb'가로드됩니다 – shime

+0

이 초기화 프로세스에 대한 자세한 내용을 알려주십시오. 왜 boot.rb와 environment.rb를로드해야합니까? Rails.root와 File.join은 무엇을합니까? – Aayush

답변

1

#/usr/지방/ruby- current/bin/ruby ​​-이 파일을 실행하는 방법을 유닉스 계열 시스템에 알리는 shebang 주석.

ENV [ 'RAILS_ENV'] || = "development"- 선택한 작업 환경이 개발 환경인지 확인합니다. 그렇지 않은 경우 개발 환경을 설정합니다.

레일 초기화 프로세스 : 모든 애플리케이션의/public 디렉토리에서 dispatch.cgi, dispatch.fcgi, dispatch.rb라는 세 파일을 찾을 수 있습니다. 레일즈 프로세스 (CGI 프로세스, 빠른 CGI 프로세스 또는 루비 프로세스)를 시작하도록 서버를 구성하는 방법은 세 파일 중 어느 파일이 실행될 것인지 결정합니다. 실행 된 디스패치 파일은 Rails 환경을로드하고 디스패처를 호출하여 웹 서버의 요청에 응답합니다. boot.rb는 Rails_Root 환경 변수가 설정되었는지 확인합니다. 아직 수행되지 않은 경우 boot.rb는/config 아래의 한 레벨 디렉토리로 정의합니다. 일단 Rails_Root가 설정되면 공급 업체/레일에 고정 된 레일 환경의 존재 여부를 확인하여 레일을로드하는 프로세스를 계속 진행합니다. 이 폴더가 존재하면 boot.rb에 레일즈 이니셜 라이저가 필요합니다. 우리가 Rails의 로컬 (동결) 복사본이 없다면 boot.rb는 rubygems 라이브러리를로드하고 environment.rb를 스캔하여 RAILS_GEM_VERSION이 상수인지 확인합니다. boot.rb가 있으면 해당 정의 된 버전의 Rails에 대한 초기화 프로그램을로드합니다 (해당 버전의 Rails가 시스템에없는 경우 오류가 발생합니다). RAILS_GEM_VERSION이 정의되어 있지 않으면 boot.rb는 시스템에 설치된 레일스의 가장 최신 버전을 초기화하려고 시도합니다.

관련 문제