मैंने 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)
}
}
रूबी/आरएसपीसी के साथ, मैंने spec_helper.rb
फ़ाइल में ENV['PROJECT_ENV'] = 'test'
के साथ पर्यावरण चर सेट किया है।
spec_helper.rb
फ़ाइल का सबसे बड़ा समकक्ष क्या है? मैं स्कैला में पर्यावरण चर कैसे सेट कर सकता हूं? यह उत्तर पर्याप्त नहीं है।
यदि मैं $ PROJECT_ENV=test sbt test
चलाता हूं, तो मेरा परीक्षण सूट सफलतापूर्वक चलता है, लेकिन मैं केवल $ sbt test
चलाना चाहता हूं।
2 जवाब
ऐसा प्रतीत होता है कि यह प्रश्न परीक्षण कॉन्फ़िगरेशन के लिए डिफ़ॉल्ट env चर सेट करें के साथ ओवरलैप हो गया है। एसबीटी में ।
वहाँ पर स्वीकृत उत्तर ने मेरे लिए अच्छा काम किया:
fork in Test := true
envVars in Test := Map("PROJECT_ENV" -> "test")
कुंजी यह सुनिश्चित करना है कि कांटा शामिल करना सुनिश्चित करें अन्यथा एसबीटी लॉन्च करते समय एक ही एनवी खेल में उपयोग किया जाता है।
मेरे पास इसे Evan Closson के उत्तर के लिए एक टिप्पणी के रूप में पोस्ट करने के लिए पर्याप्त प्रतिष्ठा नहीं है, लेकिन शुरू में SBT 1.10 "स्कोपिंग कुंजियों के सिंटैक्स को शेल और बिल्ड परिभाषाओं दोनों के लिए स्लैश सिंटैक्स के लिए एकीकृत किया गया है।"
तो जवाब बन जाता है
Test / fork := true
Test / envVars := Map("PROJECT_ENV" -> "test")