2015-01-24 2 views
0

필자가 고려해야 할 문제는 필요한 구성 파일의 위치를 ​​쉽게 알 수 있지만 환경 설정에서 편집없이 이식 가능한 코드를 작성하는 방법입니다. 개발 환경에서 프로덕션으로 코드를 옮길 때마다 코드를 새로운 환경에 적용하기 위해 구성 파일의 위치를 ​​편집하고 싶지는 않습니다. 이 메소드는 사용자 정의 환경 변수에 대한 액세스 또는 특정 디렉토리에 대한 액세스와 같이 보편적으로 사용할 수없는 자원에 의존하지 않아야합니다. 예를 들어, DOCUMENT_ROOT를 설정 파일의 기본 위치로 사용하는 것이 길 일 수도 있지만 보편적이지는 않습니다. 첫째, 명령 행 환경에서 DOCUMENT_ROOT는 의미가 없습니다. 둘째, 프로그래머에게는 DOCUMENT_ROOT의 하위 폴더에만 액세스 할 수 있습니다. 또 다른 요구 사항은 구성 파일이 런타임에 알려진 값 (예 : How to load a config file based on user selection from "unknown" location)과 같이 응용 프로그램을 호출 한 사용자에 따라 달라질 수 있다는 것입니다.구성 파일의 위치를 ​​편집하지 않고도 코드를 이동하고 업데이트 할 수 있도록 코드를 구성하는 방법은 무엇입니까?

Location to put user configuration files in windows과 같은 특정 환경에서 구성 파일의 최적 위치가 문제가되지 않습니다. 최종 사용자가 구성 파일을 쉽게 찾을 수 있도록 프로그래머는 최상의 위치를 ​​파악해야합니다. 문제는이 위치가 런타임에 알려진 값에 따라 다르더라도이 위치가 이동식으로 코드에 전달 될 수있는 방법입니다.

답변

0

하나의 접근법은 다른 파일에 포함된다는 점을 염두에두고 스크립트 파일을 디자인하는 것입니다. 포함 된 파일의 이점에 따라 구성 파일의 디렉토리 만 정의하는 래퍼 스크립트가 생길 때까지 계속됩니다 및 그 안에 포함 된 다른 파일들. 이 디렉토리 경로가 알려지면 그 안에있는 명명 된 구성 파일에서 다른 구성 값을 얻을 수 있습니다. 이는 저장소 또는 테스트 환경에서 코드를 업데이트 할 때 래퍼 스크립트가 업데이트되지 않기 때문에 작동합니다. 이 접근법은 보편적으로 적용 가능합니다 : 사용자 정의 환경 변수에 대한 액세스 또는 서버의 특정 디렉토리에 대한 액세스와 같은 모든 종류의 특별한 지원이 필요하지 않습니다. 코드에 대한 액세스 권한이 있어야 엄격한 최소 기대 수준으로 작동합니다. 또한 스크립트는 자연스럽게 다른 파일에 포함되도록 자연스럽게 설계되기도합니다.

접근법은 CONFIG_DIRECTORY와 같은 상수 이름에 대한 규칙에 동의하는 경우에만 필요합니다. 모든 프로그래머가 config 파일에 대해이 상수로 지정된 위치를 검색하는 데 동의하는 경우 모든 코드 사용자는 config 파일을 아무 곳에 나 배치하고 그에 따라이 상수를 정의 할 수 있습니다.

Linux의 경우 구성 파일에/etc 폴더가 있습니다. 따라서 아주 큰 맥락에서 보편적으로 합의 된 표준의 개념이 이미 존재합니다. 이것은 모든 시스템에 대해 동일한 상수이며 누군가가 서버의 해당 레벨에 액세스하지 못할 수도 있다는 점을 제외하면 여기에 제안 된 아이디어와 동일한 아이디어입니다. 더욱이, 우리는 다른 래퍼 스크립트에 대해 다른 설정 디렉토리를 가질 가능성을 잃어버린다. 유니버설 표준을 고정 상수 '/ etc'가 아닌 'CONFIG_DIRECTORY'라는 고정 된 이름으로 허용하는 것은 추가적인 불편 함없이 유연성을 제공합니다. 어떤 래퍼 스크립트에서이 상수를 정의 할 것을 요구하지만 정의되지 않은 경우 이전 접근법으로 되돌릴 수 있습니다. 결과가 접근법이 엄격히 적용된다면 서버 문서 루트에 필요한 모든 스크립트는 구성 디렉토리를 정의하는 단순한 래퍼 일뿐입니다. 멋지다. 종종 사람들은 문서 루트 밖에서 중요한 코드를 갖는 것이 더 안전하다고 말합니다.

관련 문제