2013-04-29 7 views
7

अगर मैं निम्नलिखित माणिक हैश था:के रूप में एक चर के साथ एक रूबी हैश को एक्सेस करना कुंजी

environments = { 
    'testing' => '11.22.33.44', 
    'production' => '55.66.77.88' 
} 

मैं ऊपर हैश के कुछ हिस्सों तक कैसे पहुँच चाहते हैं? मैं जो हासिल करने की कोशिश कर रहा हूं उसके नीचे एक उदाहरण।

current_environment = 'testing' 
"rsync -ar [email protected]#{environments[#{testing}]}:/htdocs/" 

उत्तर

4

ऐसा लगता है कि आप, exec कि अंतिम पंक्ति करना चाहते हैं यह स्पष्ट रूप से नहीं बल्कि रूबी कोड की तुलना में एक शेल कमांड के रूप में। आपको दो बार इंटरपोल करने की आवश्यकता नहीं है; एक बार करना होगा:

exec("rsync -ar [email protected]#{environments['testing']}:/htdocs/") 

या, चर का उपयोग कर:

exec("rsync -ar [email protected]#{environments[current_environment]}:/htdocs/") 

ध्यान दें कि अधिक रूबी रास्ता कुंजी के रूप में तार प्रतीकों के बजाय का उपयोग करने के लिए है:

environments = { 
    :testing => '11.22.33.44', 
    :production => '55.66.77.88' 
} 

current_environment = :testing 
exec("rsync -ar [email protected]#{environments[current_environment]}:/htdocs/") 
+0

बहुत बढ़िया :) जवाब के लिए धन्यवाद। –

+0

आपका बहुत स्वागत है! –

2

आप कोष्ठक का प्रयोग करेंगे:

environments = { 
    'testing' => '11.22.33.44', 
    'production' => '55.66.77.88' 
} 
myString = 'testing' 
environments[myString] # => '11.22.33.44' 
संबंधित मुद्दे