2013-08-28 2 views
1

/app/config/environments/production.rb 안에 상수를 사용해야합니다. 구성 상수로 어딘가에 넣고 싶습니다. 그래서 initializer 파일에 넣으려고했지만 /app/config/environments/production.rb가로드 된 것 같습니다. 그런 다음 내 상수를 /app/config/environment.rb 안에 Rails::Initializer.run do |config|... 안에 넣으려고했지만 /app/config/environments/production.rb은 아직로드 된 것 같습니다. 어디에서 /app/config/environments/production.rb이 그것을 인식하도록 configm 상수로 propermy를 넣을 수 있습니까?레일에 구성 상수를 입력 할 위치

+0

응용 프로그램에서 구성 관리를 시도하십시오. https://github.com/laserlemon/figaro –

+0

프로덕션 환경에서이 상수 만 필요하다고 가정 할 때 상수를'config/environments/production .rb'? 단순한 프로덕션 이상의 기능을 필요로한다면'config/environment.rb'의 맨 위에 정의 할 수 있습니다. – lmars

답변

3

귀하의 앱으로 걸어가는 경로가 초기화 파일을로드하는지 확인해 보겠습니다. ,

당신이 (당신의 app/script/rails 파일에서) rails s를 실행 rails 서버를 실행 한 후

  • 앱이 boot.rb 필요 (보석 로딩과 주로 거래) 파일을 : 당신은 마음이에 있어야합니다 콘솔 args (여기서 server 별칭 s) 요구 사항은 rails 소스 코드에있는 railsrailties/lib/rails/command.rb 파일로 전달됩니다.

  • 여기에 앱 config/application.rb이 필요합니다. 그런 다음 Server 클래스가 인스턴스화되고 railties/lib/rails/command/server.rb 파일에 던집니다. 사실 Server 클래스는 Rack::Server에서이므로 rails 앱은 rack 앱입니다! 따라서 rails 앱에 config.ru 개의 파일이 표시되고 config/environment.rb 파일이로드됩니다.

config/environment.rb 파일이 적절한 rails framework로드 앱이 config/applcation.rb을 요구하는 두 가지

  • 한다. (정보의 경우, 앱에서 Rails::Application에서 상속 application.rbApplication 클래스를 찾을 수 있습니다 이는 Rails::Railtie 클래스에서 상속받은 Rails::Engine에서 상속되며

  • calli initialize! 뱅 메서드를 사용하여 config/environment/*.rb 파일을로드 한 다음 모든 초기화 프로그램 프로세스를 처리합니다.보다 정확하게는 초기화 메서드는 railties/lib/rails/engine.rb 파일에 정의되어 있습니다. 이제 이것을 고려하여 상수를 올바르게 정의 할 수 있어야합니다.

더 나은 내가 당신에게 주로이 답변을 영감이 큰 railscast를, 운영자 추천의 초기화 데이터의 과정을 이해합니다.

관련 문제