upda TE: मैं एक ब्लॉग इस उत्तर के आधार पर पद चुके हैं, लेकिन और अधिक विस्तार के साथ: http://thoughtsincomputation.com/posts/coding-an-acts_as-gem-for-rails-3
-
मैं अपने सिर के ऊपर से एक और ट्यूटोरियल स्रोत के बारे में पता नहीं कर रहा हूँ, लेकिन यहाँ हैं कुछ सामान्य सुझाव।
रेल 3 रेलवे नामक वास्तव में उपयोगी सुविधा का उपयोग करता है - http://api.rubyonrails.org/classes/Rails/Railtie.html देखें।
तो, अगर मैं एक act_as_ * मणि लागू कर रहा था, तो मैं वहां से शुरू करूंगा।
# lib/acts_as_awesome/railtie.rb
require 'rails'
require 'acts_as_awesome'
module ActsAsAwesome
class Railtie < Rails::Railtie
config.to_prepare do
ApplicationController.send(:extend, ActsAsAwesome::Hook)
end
end
end
और ActsAsAwesome :: हुक कोड:: मेरी railtie की तरह कुछ लग सकता है
# lib/acts_as_awesome/hook.rb
module ActsAsAwesome::Hook
def acts_as_awesome(*args)
options = args.extract_options!
# do the things that make the controller awesome.
include ActsAsAwesome::InstanceMethods
before_filter :an_awesome_filter
end
end
मैं यहाँ अवधारणाओं लग रहा है ध्वनि कर रहे हैं और इससे पहले कि इसी तरह की प्रक्रियाओं का इस्तेमाल किया है। असल में, यह रेलों को उत्पादन के दौरान एक बार toprepare ब्लॉक निष्पादित करने के लिए बताएगा और विकास में प्रत्येक अनुरोध से पहले (हम चाहते हैं कि उस समय एप्लिकेशन कंट्रोलर को फिर से लोड किया जाएगा, संभावित रूप से हमारी हुक विधि को मिटा दें); और हुक बस यही है: यह सभी नियंत्रकों (या बल्कि, सभी नियंत्रक जो अनुप्रयोग नियंत्रक का विस्तार करते हैं) को एक हुक जोड़ता है ताकि उपयोगकर्ता को उनके नियंत्रकों में असली "बहुत बढ़िया" कोड पेश करने की अनुमति मिल सके, अन्यथा उन नियंत्रकों को प्रभावित किए बिना, जिन्हें इसकी आवश्यकता नहीं है।
#acts_as_awesome हुक अपने आप में, अद्भुत कार्यक्षमता व्यक्त नहीं करता है। ऐसा इसलिए है क्योंकि सभी नियंत्रकों को इस कार्यक्षमता की आवश्यकता नहीं हो सकती है। इसके बजाय, विधि वास्तविक भयानक सामान, ActsAsAwesome :: InstanceMethods मॉड्यूल के माध्यम से प्रस्तुत करने के लिए ज़िम्मेदार है। इस तरह, उपयोगकर्ता केवल Awesome कार्यक्षमता प्राप्त करता है अगर वे स्पष्ट रूप से act_as_awesome विधि को कॉल करते हैं। यह नियंत्रक को फ़िल्टर से पहले एक फिल्टर भी जोड़ता है ताकि यह प्रदर्शित किया जा सके कि इस विधि में कोड का मूल्यांकन उसी तरह किया जाएगा जैसे कि यह लक्ष्य नियंत्रक वर्ग में ही था।
यदि आप नियंत्रकों के बजाय मॉडल को लक्षित कर रहे हैं तो यह तकनीक बिल्कुल वही काम करनी चाहिए: केवल ActiveRecord :: Base में अपना हुक इंजेक्ट करें। एआर के रूप में: बी केवल रेल बूट पर लोड होता है, आपको शायद इसे प्रारंभकर्ता में डालने में सक्षम होना चाहिए (रेलटी दस्तावेज़ों का संदर्भ लें), लेकिन मुझे यहां गलत होने का अधिकार सुरक्षित है।
रेलटे से संबंधित एक गोचा: दस्तावेज पढ़ता है जैसे कि यह स्वतः पता लगाया जाना चाहिए था, लेकिन मुझे अक्सर इसके साथ समस्याएं होती हैं।इसके आस-पास पहुंचने के लिए, बस अपने मणि की मुख्य स्रोत फ़ाइल से रेलटी की आवश्यकता होती है (उपरोक्त उदाहरण में, यह lib/act_as_awesome.rb होगा)।
तुम मेरे GitHub खाते में अपने सभी महिमा में पूरे ActsAsAwesome स्रोत देख सकते हैं: http://github.com/sinisterchipmunk/acts_as_awesome
मुझे आशा है कि यह उपयोगी है। आपका प्रश्न कुछ हद तक उच्च स्तर था इसलिए उच्च स्तर की प्रतिक्रिया सबसे अच्छी है जो मैं कर सकता हूं। इतना
-Colin मैकेंज़ी चतुर्थ
http://thoughtsincomputation.com
@sinisterchipmnk
धन्यवाद। मैं आपके ट्यूटोरियल का पालन कर रहा था। यह सहायक है। – cbrulak
कोई समस्या नहीं, मदद करने में खुशी हुई। मेरी सामग्री को पढ़ने (और उल्लेख करने!) पढ़ने के लिए धन्यवाद :) अगर लिंक के लिए नहीं तो मैंने कभी यह प्रश्न नहीं देखा होगा। (यह साइट के आंकड़ों में पॉप अप देखा, हे।) – sinisterchipmunk
मैंने उस लेख और एक पुरानी रेल प्लगइन के आधार पर एक मणि बनाया। यदि आप चाहते हैं कि आप इसे देख सकें, क्योंकि यह एक अच्छा उदाहरण है: https://github.com/toptierlabs/acts_as_fulltextable – Tony