Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Ruby

रूबी रत्न कैसे काम करता है?

रेल के साथ काम करना इतना अच्छा बनाने वाली चीजों में से एक यह है कि किसी भी सामान्य प्रोग्रामिंग आवश्यकता के लिए --- प्राधिकरण, साइट प्रशासन, ईकॉमर्स, आप इसे नाम दें --- किसी ऐसे व्यक्ति ने आपकी समस्या के समाधान को कोड किया है और इसे पैक किया है एक मणि के रूप में ऊपर।

आप निश्चित रूप से अपने Gemfile में रत्न जोड़ सकते हैं और उनकी उपयोगिता का पूरा लाभ उठा सकते हैं बिना यह समझे कि वे कैसे काम करते हैं, लेकिन क्या आप कभी उत्सुक हैं कि यह सब कैसे तार-तार हो जाता है?

यहां हम रयान बेट्स के कैनकैन प्राधिकरण रत्न पर करीब से नज़र डालेंगे और निम्नलिखित प्रश्नों के उत्तर देंगे (जो, यदि अधिक व्यापक रूप से पूछे जाएं, तो किसी भी रत्न पर लागू हो सकते हैं):

  1. कैनकैन के लिए कोड कहाँ संग्रहीत किया जाता है?

  2. can? विधि परिभाषित?

  3. रेल कैनकैन के लिए कोड कब/कहां/कैसे लोड करता है?

सबसे पहले, मेरे जेमफाइल में कैनकैन है और मैं एक bundle install करता हूं :

# Gemfile
gem "cancan", "~> 1.6.10"```

$ bundle install

बंडलर के साथ यह देखना वास्तव में आसान है कि कोई विशेष रत्न कहाँ रहता है। बस bundle show का उपयोग करें :

$ bundle show cancan
/Users/jasonswett/.rvm/gems/ruby-2.0.0-p0/gems/cancan-1.6.10

यह प्रश्न # 1 का ख्याल रखता है। अब can? . कहां है परिभाषित?

$ cd /Users/jasonswett/.rvm/gems/ruby-2.0.0-p0/gems/cancan-1.6.10
$ grep -r 'def can?' *
lib/cancan/ability.rb: def can?(action, subject, *extra_args)
lib/cancan/controller_additions.rb: def can?(*args)

ऐसा लगता है कि वास्तव में दो अलग-अलग हैं can? कार्य। जिस में हमारी रुचि है वह है lib/cancan/ability.rb

# lib/cancan/ability.rb

def can?(action, subject, *extra_args)
match = relevant_rules_for_match(action, subject).detect do |rule|
rule.matches_conditions?(action, subject, extra_args)
end
match ? match.base_behavior : false
end

जहाँ तक वास्तव में यहाँ क्या हो रहा है, आपका अनुमान मेरे जितना ही अच्छा है, लेकिन यह महत्वपूर्ण हिस्सा नहीं है। यहाँ महत्वपूर्ण बात यह है कि यदि आप किसी रत्न के साथ किसी समस्या का सामना कर रहे हैं, तो अब आप यह जानने के लिए रत्न के कोड में खुदाई करने के लिए तैयार हैं कि क्या हो रहा है।

अब जबकि हम जानते हैं कि रत्न का कोड कहाँ रखा जाता है और उसमें कैसे प्रवेश किया जाता है, रेल को रत्न के बारे में कैसे पता चलता है, और यह रत्न का कोड कब लोड करता है?

यह रेल प्रारंभिक दस्तावेज के एक निश्चित खंड में शामिल है। यहाँ प्रासंगिक हिस्सा है:

एक मानक रेल एप्लिकेशन में, एक Gemfile होता है जो एप्लिकेशन की सभी निर्भरताओं की घोषणा करता है। config/boot.rb इस फ़ाइल के स्थान पर ENV['BUNDLE_GEMFILE'] सेट करता है। यदि Gemfile मौजूद है, तो बंडलर/सेटअप की आवश्यकता है।

यह आरंभिक प्रक्रिया में जल्दी होता है:दूसरा चरण, सटीक होना। यह समझ में आता है क्योंकि यदि आपकी परियोजना एक निश्चित मणि पर निर्भर करती है, तो कौन जानता है कि आप इसका संदर्भ कहां दे सकते हैं। इसे जल्द से जल्द लोड करें ताकि इसका कोड कहीं भी इस्तेमाल किया जा सके।


  1. एक मैट्रिक्स क्या है और रूबी में इसका उपयोग कैसे करें?

    मैट्रिक्स एक 2डी (2-आयामी) सरणी है जिसका उपयोग स्प्रेडशीट जैसे डेटा को स्टोर और काम करने के लिए किया जा सकता है। उनका उपयोग इसके लिए किया जा सकता है : टेबल गेम (शतरंज, चेकर्स, आदि) में बोर्ड का प्रतिनिधित्व करना सांख्यिकी और डेटा विश्लेषण प्लॉट और ग्राफ़ बनाना चूंकि यह एक शक्तिशाली डेटा संरचना ह

  1. रूबी में स्टेट मशीन बनाने के लिए AASM रत्न का उपयोग कैसे करें

    आज आप स्टेट मशीनों के बारे में जानेंगे कि वे कैसे काम करती हैं और AASM रत्न के साथ अपने रूबी प्रोजेक्ट्स में उनका उपयोग कैसे करें। अब : ट्रैफिक लाइट की कल्पना करें… यह लाल, हरा या पीला हो सकता है। जब यह रंग बदलता है, तो अगला रंग वर्तमान . पर आधारित है एक। मान लें कि यह एक ऐसा प्रकार है जो अंध

  1. रूबी 2.6 में एमजेआईटी क्या है और यह कैसे काम करता है?

    रूबी के प्रदर्शन में बहुत सुधार हो रहा है, संस्करण दर संस्करण… और रूबी विकास टीम रूबी को और भी तेज बनाने के लिए हर संभव प्रयास कर रही है! इन प्रयासों में से एक 3×3 परियोजना है। लक्ष्य? रूबी 3.0, रूबी 2.0 से 3 गुना तेज होगा । इस प्रोजेक्ट का एक हिस्सा नया MJIT कंपाइलर है, जो इस लेख का विषय है। MJ