$ बंडल
निष्पादित रेक डीबी: माइग्रेट रेक कार्य को निष्पादित करने के लिए जेमफाइल में निर्दिष्ट रेक के संस्करण का उपयोग करता है db:migrate
।
लेकिन जेमफाइल में कोई रेक रत्न निर्दिष्ट नहीं है!
हां, लेकिन एक रेक रत्न को किसी अन्य रत्न की निर्भरता के रूप में स्थापित किया गया था - जेमफाइल.लॉक में देखें। तो नियम होना चाहिए: Gemfile.lock में निर्दिष्ट रेक के संस्करण का उपयोग करता है।
लेकिन Gemfile.lock एक विशिष्ट संस्करण निर्दिष्ट नहीं करता है - यह xy से बड़ा संस्करण निर्दिष्ट करता है!
फिर नियम होना चाहिए: रेक के संस्करण का उपयोग करता है जो वर्तमान रत्न में स्थापित किया गया था।
$ रेक डीबी:
सामान्य रूप से माइग्रेट करें , जब आप कमांड लाइन पर एक कमांड जारी करते हैं, उदाहरण के लिए रेक, आपका सिस्टम आपके पैथ वातावरण चर में निर्दिष्ट निर्देशिकाओं की सूची में कमांड के लिए खोज करता है। पहली निर्देशिका जिसमें कमांड शामिल है वह कमांड का संस्करण है जिसका उपयोग किया जाता है। यह देखने के लिए कि कौन सी निर्देशिका है, आप कर सकते हैं:
$ which rake
इसलिए यदि आप निष्पादित करते हैं,
$ rake db:migrate
कि आप के साथ स्थापित की तुलना में एक अलग रेक रत्न का उपयोग कर सकते हैं bundle install
। लेकिन, भले ही आपका सिस्टम उसी रेक संस्करण को खोजता bundle exec
है, रेक स्रोत कोड द्वारा आवश्यक किसी भी रत्न को आपके प्रोजेक्ट के रत्न के बाहर के स्थानों में खोजा जाएगा। इसलिए, कई तरीके हैं जो बस:
$ rake db:migrate
चीजों को पेंच कर सकते हैं।
रूबी ऑन रेल्स ट्यूटोरियल बुक (मुफ्त ऑनलाइन), खंड 3.6 के अनुसार, यदि आप rvm 1.11.x + का उपयोग कर रहे हैं, तो आपको आदेशों को प्रस्तुत करने की आवश्यकता नहीं है bundle exec
।