【发布时间】:2017-02-15 13:20:58
【问题描述】:
我创建了一个带有 get 方法的 Config 对象,以根据 PROJECT_ENV 环境变量返回不同的字符串。如果PROJECT_ENV=test,则Config.get("somePath")返回some/path.csv,否则返回s3a://some_bucket/a_file.csv。
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)
}
}
使用 Ruby / RSpec,我在 spec_helper.rb 文件中使用 ENV['PROJECT_ENV'] = 'test' 设置环境变量。
spec_helper.rb 文件的最大等价物是什么?如何在 Scala 中设置环境变量? This answer 还不够。
如果我运行 $ PROJECT_ENV=test sbt test,我的测试套件会成功运行,但我只想运行 $ sbt test。
【问题讨论】:
-
为什么要在sbt里面设置环境变量?您想跨应用程序使用它吗?