माणिक में सेफ जॉइन कैसे करें?


188

मेरी रेल विकास का वातावरण विंडोज़-आधारित है, और मेरा उत्पादन वातावरण लिनक्स-आधारित है।

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

-लेकिन विंडोज में यह होना चाहिए 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

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

जवाबों:


329

मैं File.join का उपयोग करने की सलाह देता हूं

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

51

एक बात ध्यान दें। रूबी विंडोज सहित सभी प्लेटफार्मों पर फ़ाइल विभाजक के लिए "/" का उपयोग करती है, इसलिए आपको वास्तव में अलग-अलग प्लेटफार्मों पर चीजों को एक साथ जोड़ने के लिए अलग-अलग कोड का उपयोग करने की आवश्यकता नहीं है। "C: /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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.