2012-09-27 3 views
3

나는 루비 보석을 쓰고있어 사용자가 자신의 yaml 파일 설정을 사용하게하고 싶지만 user_config.yml이 레일스 설정에 있는지 테스트하는 법을 모르겠다. 통로.
이 파일이 config 경로에있는 경우에만 user_config.yml을 사용하고 싶습니다.레일 설정 경로 yaml에 접근하는 방법

답변

11

Rails.root (또는 이전 버전의 레일에서는 RAILS_ROOT)은 응용 프로그램 루트의 경로를 제공합니다. 거기에서 관심있는 파일이 있는지 확인할 수 있습니다.

path = File.join(Rails.root, "config", "user_config.yml") 
if File.exists?(path) 
    # do something 
end 
+2

요즘에는'Rails.root.join ('config', 'user_config.yml')' – Confusion

1

Array 유형의 $ LOAD_PATH 변수를 사용하여 Rails App의로드 경로에 액세스 할 수 있습니다.

따라서

if $LOAD_PATH.include?('/path/where/user/should/put/their/user_config.yml') 
    # EDIT 
    config_options = File.new('rails_app/config/user_config.yml', 'r') 
else 
    # EDIT 
    config_options = File.new('path/to/default/config.yml', 'r') 
end 

Ruby File class라는 #exists 또 다른 유용한 방법도있다? 물론 파일이 있는지 확인합니다. 자세한 내용은 File class docs를 참조하십시오.

희망이 시작됩니다. 귀하의 질문은 다소 모호했습니다. 도움이 더 필요하면 더 자세한 정보를 보내주십시오.

+0

죄송합니다. 설명하기가 어려웠습니다. 구성 경로 (rails_app/config/user_config.yml)에 user_config.yml이 있으면 어떻게 파일에 액세스 할 수 있습니까? 이런 식으로 사용할 수 있습니까 : YAML.load_file ("# {$ LOAD_PATH} /config/user_config.yml")? – squiter

+0

원래의 대답에서 $ LOAD_PATH 변수는 배열이므로 문자열 보간을 사용하고 싶지는 않습니다. 내 대답에서 파일로드에 대한 제안 사항에 대한 편집 내용을 참조하십시오. –

+0

@BrunnoDosSantos yaml에서 해시를 얻으려면 실제로 YAML 모듈을 사용할 수 있습니다. 'configs_hash = YAML.load_file ("path/to/config.yml") [RAILS_ENV]','RAILS_ENV'는 'development', 'test'등입니다. – cdesrosiers