2014-01-30 5 views
0

작동하지 I가 컨트롤러의 다음 쌍 :글로벌 변수가 생산

관리자 : BaseController - 응용 프로그램의 백엔드에 사용됩니다.

Base :: BaseController - 응용 프로그램의 프론트 엔드에서 사용됩니다. 관리자 :: BaseController에서

나는 다음과 같은 전역 변수 설정 : 기본 :: BaseController에서

$FRONTEND = false 

을 다음과 같이 나는 그것을 설정 : 나는이 작업을 수행 할 수 있도록

$FRONTEND = true 

나는이 작업을 수행 다양한 모델에서 다음

def to_param 
    If $FRONTEND 
     ... 
    else 
     ... 
    end 
end 

이 생산 개발에서 작동하지만. 어쨌든 전역 변수를 사용하지 않아야한다는 것을 알고 있습니다. 이것에 대한 좋은 대안은 무엇입니까?

답변

0

대신에 환경 변수를 생성하십시오. env [ 'name ur variable'] = environment.rb 파일의 값

+0

그때 컨트롤러 내에서 환경 변수를 변경할 수 있습니다 (당신에게 Heroku에 호스팅하고 가정)도 당신에게 Heroku 계정에 추가 언급? 예를 들어 environment.rb에서 env [ 'front_end'] = true를 설정 한 다음 admin :: base 컨트롤러에서 false로 변경할 수 있습니까? – Dobabeswe

+0

예. 앱 어디서나 액세스 할 수 있습니다. – HarsHarI

0

환경 변수를 설정하기 위해 Figaro gem을 사용할 수 있습니다. 여기에서 확인하십시오 : https://github.com/laserlemon/figaro

정말 쉽게 dev 및 생산 변수를 설정할 수 있습니다.

그런 다음에 액세스 할 수 있습니다 그들 ENV['name']를 사용하고 보석도

+0

컨트롤러 내에서 환경 변수를 변경할 수 있습니까? 예를 들어 environment.rb에서 env [ 'front_end'] = true를 설정 한 다음 admin :: base 컨트롤러에서 false로 변경할 수 있습니까? – Dobabeswe

관련 문제