1
我有辦法從ScalatraServlet
以外訪問isDevelopmentMode
值嗎?它似乎來自ScalatraKernel
的特質,那麼包括這是一個可行的選擇?從ScalatraServlet外部訪問Scalatra的isDevelopmentMode
我想要實現的是使DI配置知道我是處於開發模式還是生產中能夠配置數據庫設置。我目前正在爲DI使用Subcut。
我有辦法從ScalatraServlet
以外訪問isDevelopmentMode
值嗎?它似乎來自ScalatraKernel
的特質,那麼包括這是一個可行的選擇?從ScalatraServlet外部訪問Scalatra的isDevelopmentMode
我想要實現的是使DI配置知道我是處於開發模式還是生產中能夠配置數據庫設置。我目前正在爲DI使用Subcut。
我在Scalatra的servlet的發展模式設置爲配置/系統屬性值
object AppEnv {
private val cloader = getClass.getClassLoader
val PRODUCTION = "production".intern
val DEVELOPMENT = "development".intern
val STAGING = "staging".intern
val TEST = "test".intern
lazy val environment = readEnvironmentKey(println _)
def isProduction = isEnvironment(PRODUCTION)
def isDevelopment = isEnvironment(DEVELOPMENT)
def isStaging = isEnvironment(STAGING)
def isTest = isEnvironment(TEST)
def isEnvironment(env: String) = environment.toLowerCase(Locale.ENGLISH) == env.toLowerCase(Locale.ENGLISH)
def readEnvironmentKey(failWith: String ⇒ Unit = _ ⇒ null) = {
(ep("BACKCHAT_MODE") orElse sp("backchat.mode")) getOrElse {
val inferred = "development"
failWith("no environment found, defaulting to: " + inferred)
inferred
}
}
private def sp(key: String) = {
val s = System.getProperty(key)
if (s != null && s.trim.nonEmpty) Some(s) else None
}
private def ep(key: String) = {
val s = System.getenv(key)
if (s != null && s.trim.nonEmpty) Some(s) else None
}
}
trait ApplicationModes extends ScalatraKernel {
override def environment: String = AppEnv.environment
override def isDevelopmentMode = environment != AppEnv.PRODUCTION && environment != AppEnv.STAGING
}
Scalatra的,您還可以使用系統屬性來設置模式,你都不可能讀取性能並得到類似結果。 -Dorg.scalatra.environment =開發
硬編碼的字符串已被執行。 – nilskp