3

모범 사례에 따라 개발 팀은 보안상의 이유로 응용 프로그램 구성 파일을 저장소에 저장하지 않습니다 (구성 저장을 위해 config/application.yml 파일 사용). 우리가 실제로 개발하고 배포 할 때 그러나, 이것은 몇 가지 문제가 발생 : 개발자가에 따라 다른 새 외부 URL을 추가해야 개발 및 프로덕션 환경에서 다양한 환경 구성 문제 (Rails 4 응용 프로그램)

  1. 무슨 설정 파일이 없기 때문에 응용 프로그램의 실행 환경을 제공합니다. 다른 개발자가 코드를 가져올 때 동기화되는 단일 파일을 업데이트 할 수 없습니다. 이를 수행하기 위해 로컬 config/application.yml 파일을 업데이트 한 다음 서로 다른 개발자가 로컬 파일을 업데이트 한 다음 새 ENV 변수를 서버 config/application.yml에 추가해야합니다. 더 나은 솔루션이되어야합니다.

  2. config/application.yml 파일을 저장소에 저장하고 모든 사람과 서버간에 공유하면 글로벌 구성 공유/업데이트 문제가 해결되지만 개발자가 실수로 로컬 응용 프로그램을 시작할 가능성이 생깁니다 프로덕션 모드를 선택하고 실제 이메일이나 실제 이메일을 실시간 데이터에 적용 할 수 있습니다.

이러한 유형의 문제를 해결하기위한 표준 모범 사례가 있습니까? 나는 보안을 위해 생산성을 희생하는 것 같지만 둘 다 가질 수는 없다.

저는 모든 개발자가 공유하는 repo에 config/development.yml 파일을 만드는 것에 대해 생각해 봤습니다.이 파일은 모든 환경을 제외한 모든 환경을 저장합니다. 그렇게하면 개발 용 config/ENV 항목을 공유하고 동기화 할 수 있습니다. 그러나 제작 단계에서는 서버에만있는 config/production.yml 파일을 가지고 있습니다.

프로덕션 환경을 제외한 다른 응용 프로그램에서 응용 프로그램을 시작하면 development.yml 파일이로드됩니다. 프로덕션 환경에서 시작되면 production.yml 파일을로드합니다. 그러나 production.yml 파일은 서버에서만 제공되므로 개발자가 실수로 실제 데이터 나 실제 사용자를 스팸 할 수 있습니다.

이? 나는 인터넷 검색을 많이했지만 만족스러운 해결책을 찾지 못했습니다.

답변

1

RailsConfig 보석을 확인하십시오. 이렇게하면 자신이 진술 한 것을 정확하게 수행 할 수 있지만 보석의 용이함이 있습니다. 이것은 또한 당신과 당신의 dev 팀이 설정을 무시하는 로컬 yaml 파일을 가질 수있게합니다. 내

config/settings.yml 
config/settings/#{environment}.yml 
config/environments/#{environment}.yml 

config/settings.local.yml 
config/settings/#{environment}.local.yml 
config/environments/#{environment}.local.yml 

당신은 그럼 그냥 config/settings/production.yml있을 것입니다 당신의 .gitignore 있도록이 소스 제어에 체크인되지 않습니다.