2012-02-12 15 views
8

प्रत्येक अनुरोध के लिए एक मणि को फिर से लोड करना कैसे संभव है?रेल 3.2 में प्रत्येक अनुरोध के लिए मणि को फिर से लोड कैसे करें?

मैं एक मणि विकसित करता हूं और जब भी मैं ब्राउज़र में पृष्ठ को रीफ्रेश करता हूं तो हर बार अपने मणि के कोड को फिर से लोड करना चाहता हूं। मेरा जेमफाइल:

gem "my_gem", :path => "../my_gem" 

समस्या को हल करने के लिए मैंने stakoverflow में सूचीबद्ध प्रत्येक सुझाव की कोशिश की। कुछ भी मदद नहीं की। इसके अलावा दो रेल कॉन्फ़िगरेशन पैरामीटर भी मिले हैं: watchable_dirs और watchable_files। उनका उपयोग करने का प्रयास किया लेकिन वे मेरे लिए भी काम नहीं करते हैं।

+3

किसी को यह पूछना है: * क्यों? * आप किस समस्या को हल करने की कोशिश कर रहे हैं? –

+4

@ जोर्डन प्रश्न स्पष्ट है: क्योंकि वह एक मणि विकसित कर रहा है, वह इसे बदलना और डीबग करना चाहता है। – apneadiving

+0

मुझे लगता है कि आपको अपने प्रारंभिक फ़ाइल में 'to_prepare' कथन के साथ अपने मणि की आवश्यकता होनी चाहिए, http://guides.rubyonrails.org/configuring.html#initialization-events – apneadiving

उत्तर

2

आपको उन वर्गों को चिह्नित करना चाहिए जिन्हें आप पुनः लोड करना चाहते हैं, ActiveSupport :: निर्भरता अनलोड करने योग्य विधि का उपयोग करके उतारने योग्य;

class YourClass 
    unloadable 
end 

http://apidock.com/rails/ActiveSupport/Dependencies/Loadable/unloadable और http://robots.thoughtbot.com/post/159805560/tips-for-writing-your-own-rails-engine

बुनियादी जानकारी के देना चाहिए। वैकल्पिक रूप से आप इस तरह अपना खुद का पुनः लोड कर सकते हैं;

Object.send(:remove_const, 'YOUR_CLASS') if Object.const_defined?('YOUR_CLASS') 
GC.start 
load 'path/to/your_file.rb' 
+0

समस्या यह है कि मैं एक मॉड्यूल बनाता हूं और फिर इसे एक्शन व्यू में शामिल करता हूं: 'एक्शन व्यू :: बेस.send: शामिल, माईगेम :: हेल्पर'। तो मेरे पास कक्षाएं नहीं हैं। इस मामले में जहां मुझे विधि 'अनलोड करने योग्य' का उपयोग करना चाहिए? – Vadim

+0

बिल्कुल सही, यह मेरे लिए समस्या हल हो गया! मैंने बस अपने मॉड्यूल में रेल.एन्व.डेवमेंटमेंट 'अनलोड करने योग्य रखा है, और यह एक आकर्षण की तरह काम करता है। धन्यवाद! –

2

मैंने इसके लिए चारों ओर शिकार का थोड़ा सा उद्धरण दिया है, लेकिन अंत में इसमें कुछ परीक्षण और त्रुटि आई।

lib/my_gem/my_gem.rb:

require 'active_support/dependencies' 
ActiveSupport::Dependencies.autoload_paths += [File.expand_path("..", __FILE__)] 

module MyGem 
    include ActiveSupport::Dependencies 
    unloadable 
end 

अपनी कक्षाओं के सभी को जोड़ने के लिए और साथ ही "unloadable" सुनिश्चित करें।

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