2010-11-30 4 views
57

레일스 2.3.x를 사용하고 있습니다. config.cache_classes이 true 인 경우에만 작은 코드 섹션을 실행하고 싶습니다. 기본적으로 프로덕션에서는 true이고 개발에서는 false입니다.런타임 중에 레일스 구성 값에 어떻게 액세스합니까?

내 environment.rb, development.rb 및 production.rb 파일 외부에서 config.cache_classes의 값에 액세스하려면 어떻게합니까? 우리가 생산 중이거나 개발 중인지 쉽게 알 수 있습니다. Rails.env가 답을 줄 것입니다. 그러나 개발자가 config.cache_classes = true을 개발 중에 설정하지 않았다는 보장은 없습니다.

일반적으로 개발 및 제작 과정에서 별도의 코드 경로를 실행하고 싶지는 않습니다. 이 특별한 경우에, 우리는 단순히 시작할 때 어떤 작업을 수행하지 않고 있습니다. 우리가 나중에 그것을 수행 할 필요가 있다면, 우리는 개발과 생산 모두에서 그렇게 할 것입니다. 레일이 들어

답변

91

을 수행 할 수 있습니다 : 당신이 이제까지 3 레일로 전환하면

Rails.configuration.cache_classes 

것은,이 다를 수 있습니다;

Rails.application.config.cache_classes 
+0

ㅎ. 그것이 명백한 무언가 일 것이라는 점을 알았습니다. 나는 Rails.config를 시도했지만 그렇게하려고 생각하지 않았다. 감사. 시간 제한이 만료되면이 대답을 수락 할 것입니다. – ChrisInEdmonton

+0

컨트롤러마다 설정할 수있는 perform_caching의 예외도 있으므로 컨트롤러 당 액세스해야합니다 – iain

+6

제게는 MyApp :: Application.config.foo' (Rails 4.1)입니다. –

1

모듈에있는 위치에 따라 루트 네임 스페이스에 액세스해야 할 수 있습니다. 이것은 3+ 레일에 대한 보편적 인 방법으로 어디서든 액세스를 제공해야합니다

::Rails.application.config

관련 문제