2012-06-10 2 views
4

Ruby on Rails 응용 프로그램에서 구성 값 (키, 암호 또는 구성 값)을 저장하는 가장 좋은 장소는 어디입니까? 나는 많은 것을 수색했고, 내가 옳은 것을 생각한 대답을 찾지 못했습니다.레일 - 설정 값은 어디에 저장합니까?

답변

2

아마 the rails guide for configuring applications을 읽었습니까? 그 외에도 일반적으로 각 보석은 필요에 따라 사후 설치 생성기에 초기화 프로그램/구성 파일을 제공하고이를 README에 문서화합니다.

3

비밀번호가 포함 된 경우 중요한 데이터를 저장소에 저장하지 않도록 외부 파일에 데이터를 저장하는 것이 좋습니다. 그런 다음, 이니셜 라이저에서 파일을 읽어 메모리에 데이터를로드 할 수 있습니다 예 :

설정/my_secrets.yml :

development: 
    password: abcdefgh 
test: 
    password: abcdefgh 

설정/초기화/load_my_config.rb :

MY_CONFIG = YAML.load_file("#{Rails.root.to_s}/config/my_secrets.yml")[Rails.env] 

MY_CONFIG['password']에 액세스하면 모든 환경에서 password에 액세스 할 수 있습니다. 프로덕션 암호는 서버 및 다른 안전한 위치에만 보관할 수 있습니다.

중요하지 않은 데이터의 경우 데이터를 이니셜 라이저에 직접 배치하기 만하면됩니다. (응용 프로그램)

+0

yml 파일은 공개적으로 읽을 수 있지만 그렇지 않습니까? – thatdankent

+0

'초기화되지 않은 상수 HomeController :: MY_CONFIG' – Alexandre

+0

yml 파일은 서버에 배치되지만 레일즈 사용자 만 읽을 수 있어야합니다. – Nicholas

3

암호는 응용 프로그램에 주어진 요청의 루비 코드를 통해 등 궁리, 정리, authLogic로 인증/권한 부여 보석으로 당신을 사용할 수 원하는

변수를 처리해야 할 수 전역 변수에 저장 될 수 있습니다. 클래스 수준 고정 값은 상수에 저장 될 수 있습니다. 레일즈에서 컨트롤러는 application_controller를 상속받으며 클래스 레벨 상수를 정의 할 수 있습니다. 이러한 변수 유형에 대한 상속 규칙에 대해서는 Ruby 언어를 확인하십시오.

현실에서는 가능한 한 이것을하지 않거나 가능한 한 피하지 않는 것이 좋습니다. 많은 좋은 프로그래머가이 문제를 피할 것입니다. 즉, 코드 블록이 캡슐화되지 않았 음을 의미합니다. 이제 액션이 외부 값에 종속되며, 범위 밖에서 바뀔 수있는 한 가지에 의존하는 많은 항목을 만들어서 커플 링을 증가시킵니다.

+0

그건 훌륭한 논평입니다, 마이클. 코드 블록 외부에 정의 된 상수에 인증 키를 저장하는 것에 대한 귀하의 생각이 궁금합니다. 그것은 다른 곳에 저장할 수있는 항목입니까? – thatdankent

관련 문제