2009-02-28 15 views
134

मेरा रेल विकास पर्यावरण विंडोज-आधारित है, और मेरा उत्पादन वातावरण लिनक्स आधारित है।रूबी में सुरक्षित नाम पथनाम कैसे करें?

यह संभव है कि वर्चुअलहोस्ट का उपयोग किया जाएगा। मान लें कि File.open('/tmp/abc.txt', 'r') के साथ /public फ़ोल्डर में एक फ़ाइल नाम को संदर्भित करने की आवश्यकता है।

-बट विंडोज में यह C:\tmp\abc.txt होना चाहिए। मैं दो अलग-अलग वातावरणों को संभालने के लिए सही पथ कैसे जोड़ सकता हूं?

prefix_tmp_path = '/tmp/' 
filename = "/#{rand(10)}.txt" 

fullname = prefix_tmp_path + filename # /tmp//1.txt <- but I don't want a double // 

और जब prefix_tmp_path = "C:\tmp\" मैं C:\tmp\/1.txt

प्राप्त दोनों ही मामलों को संभालने के लिए सही तरीका क्या है?

उत्तर

258

मैं नोट करना File.join

>> File.join("path", "to", "join") 
=> "path/to/join" 
39

एक बात का उपयोग करें। रूबी विंडोज़ समेत सभी प्लेटफार्मों पर फ़ाइल विभाजक के लिए "/" का उपयोग करता है, इसलिए आपको वास्तव में विभिन्न प्लेटफार्मों पर चीजों में शामिल होने के लिए अलग-अलग कोड का उपयोग करने की आवश्यकता नहीं है। "सी: /tmp/1.text" ठीक काम करना चाहिए।

File.join() आपके साथ पथ में शामिल होने के लिए आपका मित्र है।

prefix_tmp_path = 'C:/tmp' 
filename = "#{rand(10)}.txt" 
fullname = File.join(prefix_tmp_path, filename) # e.g., C:/tmp/3.txt 
संबंधित मुद्दे