2011-08-14 13 views

回答

3

我在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 =開發

+0

硬編碼的字符串已被執行。 – nilskp