2012-03-07 2 views
0

에 YAML의 설정 통과 이니셜 라이저 만들기 : 내/config 폴더에내가 내/lib 폴더에서 만든 사용자 정의 클래스가 사용자 정의 클래스

/lib/user_service.rb 

나는 또한 user_service.yml 파일이 있습니다.

이 yml 파일을 UserService 클래스에 전달하고 일부 클래스 수준 변수를 설정하려고합니다.

클래스 변수를 만드는 방법과 이러한 변수를 설정하는 방법을 잘 모르겠습니다.

내 YAML 파일이 같은 일이 있습니다

user_service_url: http://www.example.com/user_service/ 

user_service_table: "UserTable1" 

그래서 내 UserService 클래스는 공개적으로 액세스 할 수있는이 두 특성을가집니다, 그들은 클래스 변수 (그래서 당신은 그나마 '인스턴스를 필요에 액세스 할 수 있습니다 , 인스턴스는 그것을 참조 할 수 있어야합니다).

누군가가 도와 줄 수 있습니까? 다음과 같이

/lib/user_service.rb 

module MYAPP 
    class UserService 
    end 
end 

답변

2

당신은 당신의 클래스에 대한 해시로 YAML 파일을로드 할 수

module MYAPP 
    class UserService 
    SERVICES = YAML::Load(File.open(filepath)) 
    end 
end 

당신은 다음과 같이 두 변수에 액세스 할 수 있습니다

UserService::SERVICES['user_service_url'] 

을 당신이 원하는 경우 해시 참조 스타일없이 해시 참조 스타일에 액세스하려면 해시를 조사하는 메소드를 작성하거나 해고시 해시 조회를 수행 할 수있는 method_missing을 구현하십시오.

+0

감사합니다.하지만이 메소드가 클래스 변수를 참조하기를 원합니다. 그래서 이니셜 라이저에서이 작업을 수행하려고합니다. 저는 매번 yaml에서 읽는 것을 원하지 않습니다. 단지 class vars를 설정하기 위해 한 번만 읽는 것입니다. – Blankman

+0

YAML을 매번 다시 읽지 않게하는 상수에로드됩니다 (한 번만). –

관련 문제