2013-02-26 159 views
20

मैं जब मैं नए फ़ोल्डर उत्पन्न करने के लिए प्रयास करते हैं, इसके अंदरLogger.new के साथ फ़ोल्डर कैसे बनाएं (यदि मौजूद नहीं है)?

@@my_logger ||= Logger.new("#{Rails.root}/log/today.to_s/my.log") 

डाल करने के लिए यह रिटर्न Errno::ENOENT: No such file or directory

यह एक अनुमति हो सकता है एक नया लॉग

@@my_logger ||= Logger.new("#{Rails.root}/log/my.log") 

रजिस्टर करने के लिए कोशिश कर रहा हूँ, लेकिन मुसीबत? Logger.new के साथ फ़ोल्डर कैसे बनाएं (यदि मौजूद नहीं है)?

उत्तर

36

इस तरह कुछ कोशिश करें।

dir = File.dirname("#{Rails.root}/log/#{today}/my.log") 

    FileUtils.mkdir_p(dir) unless File.directory?(dir) 

    @@my_logger ||= Logger.new("#{Rails.root}/log/#{today}/my.log") 
+0

धन्यवाद कर सकते हैं, दोस्त –

3

रेलिंग निर्देशिकाओं के स्वचालित निर्माण को रेल में हटा दिया गया है। यहाँ Logger.new कोड से एक कोड का टुकड़ा है:

ActiveSupport::Deprecation.warn("Automatic directory creation for '#{log}' is deprecated. Please make sure the directory for your log file exists before creating the logger. ") 

स्वीकृत अभ्यास अब यकीन है कि लॉग फ़ाइल (और निर्देशिका) लकड़हारा बनाने से पहले अस्तित्व में बनाना है।

यकीन है कि निर्देशिका समय से आगे मौजूद है इस के समान कोड का उपयोग हो सकता है बनाने के लिए एक तरह से:

log_file_name = '/path/to/my.log' 
unless File.exist?(File.dirname(log_file_name)) 
    FileUtils.mkdir_p(File.dirname(log_file_name)) 
end 
+0

धन्यवाद जानकारी के लिए .... तो इसे बहिष्कृत कर दिया गया .... जब मैंने पूछा, तो मुझे पता था कि लॉगर प्रारंभकर्ता के लिए एक param था जो फ़ोल्डरों के निर्माण को संभालेगा .. –

10

तुम भी इस तरह से

directory_name = "name" 
Dir.mkdir(directory_name) unless File.exists?(directory_name)