2012-08-30 34 views
11

पुनरारंभ करते समय हेल्पर्स केवल पुनः लोड किए जाते हैं, मैं वर्तमान में इंजन में चलती कार्यक्षमता के साथ प्रयोग कर रहा हूं। यह अब तक अच्छी तरह से काम करता है, लेकिन मैं थोड़ा उलझन में हूं कि इंजन के कुछ हिस्सों को स्वचालित रूप से फिर से लोड किया जाता है जब कुछ बदल जाता है, और कुछ नहीं होते हैं।रेल इंजन: सर्वर

विशेष रूप से, एक सहायक विधि जोड़ने के दौरान, मुझे रेल सर्वर को पुनरारंभ करना होगा, अन्यथा यह रेल द्वारा नहीं देखा जाता है। क्या यह सामान्य व्यवहार है? यहाँ मेरी इंजन के प्रासंगिक हिस्सा है:

घटकों/iq_list.rb

# encoding: utf-8 
require 'iq_list/engine' 

# Load IqList Modules 
module IqList 
    extend ActiveSupport::Autoload 
    autoload :Helpers 
    autoload :Models 
    autoload :Controllers 
end 

घटकों/iq_list/engine.rb

module IqList 
    class Engine < ::Rails::Engine 
    end 
end 

घटकों/iq_list/helpers.rb

module IqList 
    module Helpers 
    extend ActiveSupport::Autoload 
    autoload :IqListHelper 
    end 
end 

घटक/iq_list/helpers/iq_list_helper.rb

module IqList 
    module Helpers 
    module IqListHelper 
     def some_method 
     # ... 
     end 
    end 
    end 
end 

मैं अभी भी इंजन के लिए बहुत नया हूं, और ऊपर दिए गए बहुत से कोड मैंने किसी और के काम से लिया है, इसलिए कृपया मेरे साथ धैर्य रखें। सही दिशा में कोई संकेत अत्यधिक सराहना की है।

+1

http://stackoverflow.com/questions/4713066/how-can-i-force-my-plugin- टू-रीलोड-साथ-प्रत्येक अनुरोध – apneadiving

+0

आपका कोड 'घटक' निर्देशिका के नीचे क्यों है? आप ऐसा क्या कर रहे हैं? घटक रेल की एक प्राचीन विशेषता है (1.2)। –

+0

आप इसे कहां रखेंगे? जैसा कि कहा गया है, मैंने किसी और से कोड लिया है, और मुझे लगता है कि ऐसा इसलिए है क्योंकि 'ऐप/घटकों' सामान के भीतर ठीक से पुनः लोड हो रहा है। आप एक इंजन कहां रखेंगे जहां आप भारी विकास कर रहे हैं? –

उत्तर

1

ऐसा प्रतीत होता है कि आप इंजन के साथ गलत पेड़ को भड़काना कर सकते हैं। यदि आप केवल चिंताओं को अलग करने की कोशिश कर रहे हैं, तो आप शायद कुछ सादे पुराने रूबी वर्ग बनाना चाहते हैं और उन्हें lib/ (पाठ्यक्रम के एक संगठित तरीके से) में चिपकाना चाहते हैं।

एक इंजन को आपके 'वर्तमान' प्रोजेक्ट से अलग से विकसित किया जाएगा, संभवतः एक मणि के माध्यम से लाया जाएगा। शामिल रत्नों में परिवर्तन आपके सर्वर AFAIK को पुनरारंभ करने की आवश्यकता होगी।

1

आप पुनः लोड हर अनुरोध पर उत्पादन और हर में एक बार चलाने के लिए गारंटी है इंजन intialization कोड to_prepare ब्लॉक में

module IqList 
    class Engine < ::Rails::Engine 
    config.to_prepare do 
    ApplicationController.helper(IqListHelper) 
    end 
    end 
end 

संहिता की to_prepare ब्लॉक में यह जगह की जरूरत है अपने इंजन से कोड की जरूरत है विकास में समय

रेल गाइड को देखने के रूप में अच्छी तरह What does this Rails Engine code mean: config.to_prepare &method(:activate).to_proc

के रूप में और

http://robots.thoughtbot.com/tips-for-writing-your-own-rails-engine

+0

के साथ शुरू करने के तरीके के बारे में कृपया (दस्तावेज) [http://guides.rubyonrails.org/engines.html] देखें, यदि आप मॉड्यूल नोटेशन का उपयोग करते हैं और आपके इंजन का अपना एप्लीकेशन कंट्रोलर है, तो आपको ':: एप्लिकेशन कंट्रोलर का उपयोग करना चाहिए .helper (IqListHelper) 'इसके बजाए। –