2013-08-19 4 views
0

나는 ruby에서 settingslogic - gem을 알고 있습니다. 이렇게하면 매우 세련된 방법으로 기본값 또는 settingslogic example에 설명 된대로 응용 프로그램에 대한 대체 설정을 정의 할 수 있습니다.응용 프로그램의 기본 설정

나는 PyYaml을 통해 읽고 있는데, 아직 이렇게 좋은 방법을 찾지 못했습니다.

당신은 어떻게 우아하고 파이썬 적으로 이러한 문제를 해결할 수 있습니까?

+0

PyYaml는 YAML 파싱 라이브러리입니다; 왜 Ruby 다중 계층 설정 라이브러리와 동등 할 것이라고 기대합니까? – abarnert

답변

1

왜 YAML 파싱 라이브러리가 다층 설정 대체를 제공 할 것으로 기대하는지 모르겠습니다. Ruby의 YAML 파싱 라이브러리는 확실히 그렇지 않습니다. 그래서 당신이 처음에 언급 한 것과 같은 래퍼 젬 (wrapper gem)이 있습니다.

그러나 내가 링크 한 것을 보면 라이브러리에는 전혀 논리가 없습니다. 값이없는 경우 응용 프로그램 논리 코드에서 ||=을 사용해야합니다. 파이썬에서도 똑같은 일을 할 수 있습니다. 그것은 단지 다른 철자입니다. 루비에서

, 다른 기본값을하려는 경우 nil, 괄호 플러스 ||을하려는 경우, 브래킷을 키 누락에 대한 예외를 원하는 경우 도트 액세스를 사용하고, 약간 해키하지만 관용적 괄호 플러스 ||= 당신이 원하는 경우 다른 기본값을 설정하고 반환합니다. 사용자가 설정 및 다른 기본을 반환 할 경우 파이썬에서

, 당신은 당신이 인수 None, get 당신이 다른 기본을 원하는 것입니다하려는 경우 키, get 누락에 대한 예외를 원하는 경우 괄호를 사용하고 setdefault. 그래서,이 루비 코드 :

>> settings.messaging['queue_name'] ||= 'user_mail' 
=> "user_mail" 

은 ... 파이썬으로 다음과 같습니다

>>> settings['messaging'].setdefault('queue_name', 'user_mail') 
user_mail 
관련 문제