2011-12-28 4 views
49

में वर्तमान निर्देशिका की पेरेंट निर्देशिका जाओ मैं समझता हूँ कि मैं कैसे वर्तमान निर्देशिका की पेरेंट निर्देशिका के बारे में द्वारारूबी

$CurrentDir = Dir.pwd 

वर्तमान निर्देशिका मिल सकता है?

उत्तर

92
File.expand_path("..", Dir.pwd) 
+12

@Niklas:: या 'File.expand_path ('..')', [डिफ़ॉल्ट 'dir_string'] (http: // माणिक डॉक यह पूर्ण एक ऐसा कर सकता है बनाने के लिए यह सुनिश्चित हो। संगठन/कोर-1.9.3/File.html # विधि-c-expand_path) '' 'है। –

+0

@muistooshort: जानना अच्छा है :) –

+0

@ निकलास: मैंने अभी भी इसे सीखा है इसलिए हम भी हैं :) –

11

शायद सबसे सरल समाधान:

puts File.expand_path('../.') 
+10

क्यों नहीं 'file.expand_path (' .. ')'? –

+0

@muistooshort वास्तव में दिलचस्प, और निश्चित रूप से जानने के लिए उपयोगी, धन्यवाद;) – maprihoda

+0

आपके उत्तर ने 'File.expand_path' के लिए spec की जांच करने के लिए मेरी जिज्ञासा पिक्चर की है, इसलिए इसके लिए धन्यवाद। –

4

मुझे लगता है कि एक और भी सरल समाधान File.dirname उपयोग करने के लिए है:

2.3.0 :005 > Dir.pwd 
=> "/Users/kbennett/temp" 
2.3.0 :006 > File.dirname(Dir.pwd) 
=> "/Users/kbennett" 
2.3.0 :007 > File.basename(Dir.pwd) 
=> "temp" 

File.basename पथ के घटक है कि File.dirname नहीं देता है।

यह, केवल तभी काम करता है जब फाइलपेक पूर्ण और सापेक्ष नहीं है।

2.3.0 :008 > File.expand_path('.') 
=> "/Users/kbennett/temp" 
2.3.0 :009 > File.dirname(File.expand_path('.')) 
=> "/Users/kbennett"