রুবিতে নিরাপদ যোগদানের পথের নামটি কীভাবে করবেন?


188

আমার রেলগুলির বিকাশের পরিবেশটি উইন্ডোজ ভিত্তিক এবং আমার উত্পাদন পরিবেশ লিনাক্স ভিত্তিক।

ভার্চুয়ালহোস্ট ব্যবহার করা সম্ভব। ধরে নিন যে একটি /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("path", "to", "join")
=> "path/to/join"

51

একটি বিষয় লক্ষণীয়। রুবি উইন্ডোজ সহ সমস্ত প্ল্যাটফর্মে ফাইল বিভাজক হিসাবে একটি "/" ব্যবহার করে, তাই আপনাকে অবশ্যই বিভিন্ন প্ল্যাটফর্মে একসাথে জিনিসগুলিতে যোগদানের জন্য আলাদা কোড ব্যবহার করার দরকার নেই। "সি: /tmp/1.text" ঠিকঠাক কাজ করা উচিত।

একসাথে পাথে যোগদানের জন্য ফাইল.জয়াইন () আপনার বন্ধু।

prefix_tmp_path = 'C:/tmp'
filename = "#{rand(10)}.txt"
fullname = File.join(prefix_tmp_path, filename) # e.g., C:/tmp/3.txt
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.