2016-10-06 3 views
2

PROJECT_ENV 환경 변수를 기반으로 다른 문자열을 반환하는 get 메소드로 Config 객체를 만들었습니다. PROJECT_ENV=test 인 경우 Config.get("somePath")은 일부/path.csv를 반환하고, 그렇지 않으면 s3a : //some_bucket/a_file.csv를 반환합니다. 루비/RSpec에와스칼라/SBT 테스트 스위트를 실행할 때 환경 변수 설정

object Config { 

    def test(): Map[String,String] = { 
    Map(
     "somePath" -> "some/path.csv" 
    ) 
    } 

    def default(): Map[String,String] = { 
    Map(
     "somePath" -> "s3a://some_bucket/a_file.csv" 
    ) 
    } 

    def get(key: String, env: Option[String] = sys.env.get("PROJECT_ENV")): String = { 
    val lookupMap = if (env == Some("test")) { 
     List(default(), test()).flatten.toMap 
    } else { 
     default() 
    } 
    lookupMap(key) 
    } 

} 

, 나는 ENV['PROJECT_ENV'] = 'test'으로 spec_helper.rb 파일에서 환경 변수를 설정하십시오.

spec_helper.rb 파일의 스칼라 테어는 무엇입니까? Scala에서 환경 변수를 설정하려면 어떻게해야합니까? This answer은 충분하지 않습니다.

$ PROJECT_ENV=test sbt test을 실행하면 내 테스트 제품군이 성공적으로 실행되지만 단순히 $ sbt test 만 실행하고 싶습니다.

+0

왜 sbt 내에 환경 변수를 설정 하시겠습니까? 응용 프로그램에서 사용 하시겠습니까? –

답변

1

이 질문은 Set default env variable for test configuration in sbt과 중복되는 것으로 보입니다.

저기 허용 된 대답은 나를 위해 잘 작동 :

fork in Test := true 
envVars in Test := Map("PROJECT_ENV" -> "test") 

의 핵심은 SBT를 시작하는 것은 사용됩니다 때 플레이 그렇지 않으면 같은 ENV를 포크를 포함해야하는 것입니다.

관련 문제