मैंने पिछले कुछ महीनों को Gemfiles और Gemfile.locks के साथ खिलवाड़ करते हुए बिताया है। एक स्वचालित निर्भरता अपडेट टूल 1 का निर्माण करते हुए । नीचे निश्चित से दूर है, लेकिन यह Gemfile.lock प्रारूप को समझने के लिए एक अच्छा प्रारंभिक बिंदु है। आप बुंडलर के लॉकफाइल पार्सर के लिए स्रोत कोड की जांच भी कर सकते हैं ।
बुन्देलर १.x द्वारा बनाई गई एक तालाबंदी में आपको निम्नलिखित शीर्षक मिलेंगे:
GEM (वैकल्पिक लेकिन बहुत सामान्य)
ये एक Rubygems सर्वर से निर्भरताएं हैं। यह Rubygems.org पर मुख्य रूबीगैम इंडेक्स हो सकता है, या यह एक कस्टम इंडेक्स हो सकता है, जैसे कि जेमफ्यूरी और अन्य से उपलब्ध। इस अनुभाग के भीतर आप देखेंगे:
remote:
रूबगिम्स इंडेक्स के स्थान को निर्दिष्ट करने वाली एक या अधिक लाइनें
specs:
निर्भरता की एक सूची, उनके संस्करण संख्या के साथ, और किसी भी उप-निर्भरता पर बाधाओं
GIT (वैकल्पिक)
ये निर्भरताएँ किसी दिए गए गिट रिमोट से होती हैं। आपको प्रत्येक git रिमोट के लिए इन वर्गों में से एक अलग दिखाई देगा, और प्रत्येक अनुभाग के भीतर आप देखेंगे:
remote:
गिट रिमोट। उदाहरण के लिए,git@github.com:rails/rails
revision:
Gemfile.lock के लिए प्रतिबद्ध संदर्भ लॉक किया गया है
tag:
(वैकल्पिक) जेमफाइल में निर्दिष्ट टैग
specs:
इस संस्करण में पाई गई निर्भरता, इसके संस्करण संख्या और किसी भी उप-निर्भरता पर बाधाओं के साथ
पथ (वैकल्पिक)
ये एक निर्भरता है जो किसी दिए गए से path
प्रदान की जाती है, जेमफाइल में प्रदान की जाती है। आपको प्रत्येक पथ निर्भरता के लिए इन वर्गों में से एक अलग दिखाई देगा, और प्रत्येक अनुभाग के भीतर आप देखेंगे:
remote:
राह। उदाहरण के लिए,plugins/vendored-dependency
specs:
इस संस्करण में पाई गई निर्भरता, इसके संस्करण संख्या और किसी भी उप-निर्भरता पर बाधाओं के साथ
प्लेटफार्म
रूबी मंच Gemfile.lock के खिलाफ उत्पन्न हुआ था। यदि Gemfile में कोई भी निर्भरता एक प्लेटफ़ॉर्म निर्दिष्ट करती है, तो उन्हें केवल Gemfile.lock में शामिल किया जाएगा, जब उस प्लेटफ़ॉर्म पर लॉकफ़ाइल उत्पन्न होता है (जैसे, इंस्टॉल के माध्यम से)।
DEPENDENCIES
निर्भरता की एक सूची जो इसमें निर्दिष्ट की गई है Gemfile
, साथ ही संस्करण की कमी भी बताई गई है।
मुख्य रूबीग्मस इंडेक्स (जैसे, जीआईटी निर्भरता, पथ-आधारित, निर्भरता) के अलावा अन्य स्रोत के साथ निर्दिष्ट निर्भरता का एक !
अर्थ है कि वे उस स्रोत 2 पर "पिन किए गए" हैं (हालांकि किसी को कभी-कभी यह निर्धारित करने के लिए जेमफाइल में देखना चाहिए)।
रूबी संस्करण (वैकल्पिक)
जब यह Gemfile.lock बनाया गया था, तो Ruby संस्करण Gemfile में निर्दिष्ट किया गया था। यदि एक .ruby_version
फ़ाइल में एक रूबी संस्करण निर्दिष्ट किया गया है, तो यह खंड मौजूद नहीं होगा (जैसा कि बुंडलर इंस्टॉलर के रूबी संस्करण के लिए Gemfile / Gemfile.lock अज्ञेय पर विचार करेगा)।
BUNDLED के साथ (बुंडलर> = v1.10.x)
Bundler का संस्करण Gemfile.lock का निर्माण करता था। बुंडलर के अपने संस्करण को अपडेट करने के लिए इंस्टॉलरों को याद दिलाने के लिए उपयोग किया जाता है, अगर यह फ़ाइल बनाने वाले संस्करण से पुराना है।
PLUGIN स्रोत (वैकल्पिक और बहुत दुर्लभ)
सिद्धांत रूप में, एक जेमफाइल बुंडलर प्लगइन्स, साथ ही रत्नों 3 को निर्दिष्ट कर सकता है , जिसे बाद में यहां सूचीबद्ध किया जाएगा। व्यवहार में, मुझे जुलाई 2017 तक किसी भी उपलब्ध प्लगइन्स के बारे में पता नहीं है। बुंदलर का यह हिस्सा अभी भी सक्रिय विकास के अधीन है!
- https://dependabot.com
- https://github.com/bundler/bundler/issues/4631
- http://andre.arko.net/2012/07/23/towards-a-bundler-plugin-system/