2012-05-18 18 views
5

रेल द्वारा 3.25 द्वारा आवश्यक लाइब्रेरी फ़ाइलों के पुनः लोड करने को मजबूर करना। मेरे पास ऑटोलोड लोड पथ में /lib के साथ एक रेल ऐप है। मेरी लाइब्रेरी फ़ाइलों में से एक की तरह फाइलों का एक समूह की आवश्यकता होती है तोएक ऑटोलोडेड लाइब्रेरी फ़ाइल

Dir[Rails.root.join("lib/foo/*.rb")].each { |f| require f } 

विकास में, उन फ़ाइलों को फिर से लोड नहीं है अगर मैं उन्हें बदल जाते हैं। उदाहरण के लिए, यदि मैं /lib/foo/bar.rb संशोधित करता हूं, तो मुझे उन परिवर्तनों को देखने के लिए सर्वर को पुनरारंभ करना होगा। क्या कोई भी एक तरीका सुझा सकता है ताकि प्रत्येक अनुरोध पर उन्हें ठीक से पुनः लोड किया जा सके?

उत्तर

3

आप अपने autoload रास्ते में उन फ़ाइलों है:

config.autoload_paths += %W(#{config.root}/lib) 

तो आप उन्हें आवश्यकता की जरूरत नहीं होनी चाहिए। क्या आपने this के साथ प्रयास किया है?

+1

आप ट्रेलिंग कोष्ठक है! – Excalibur

3

require रेल की ऑटोलोडिंग सिस्टम के साथ बहुत अच्छी तरह से नहीं खेलता है।

require_dependency बहुत कुछ करने की ज़रूरत होगी, लेकिन लूप में ऑटोलोडिंग सिस्टम को रखता है ताकि लोड किए गए स्थिरांक अनुरोध के अंत में अनलोड हो जाएंगे। आपको यह सुनिश्चित करने की आवश्यकता हो सकती है कि फाइलें रेल के ऑटोलोड लोड

+0

मॉड्यूल फ़ाइल बदलने पर एक बार जब मैंने 'आवश्यकता' रीलोडिंग को हटा दिया तो स्वचालित रूप से हो गया। धन्यवाद @ फ्रेडरिक चेंग –

0

आपको लाइन को जोड़ना या टिप्पणी करना है।

config.autoload_paths + =% डब्ल्यू (# {config.root}/lib)

config में अपने आवेदन वर्ग के लिए

/application.rb

संबंधित मुद्दे