आपने पहले ही रेक को 0.9.0 सक्रिय कर दिया है, लेकिन आपके जेमफाइल को रेक 0.8.7 की आवश्यकता होती है


124

मैं रेल परियोजना चलाने की कोशिश कर रहा हूं, मुझे मिलता है

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

अगर मैं: "बंडल स्थापित करें"

लेकिन मुझे मिल रहा है

You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7

करते हुए

rake db:migrate

जवाबों:


245

सबसे पहले, यह सुनिश्चित करने के लिए जांचें कि रेक का उल्लेख आपके जेमफाइल में किया गया है। यदि यह नहीं है, तो इसे जोड़ें, और "आप पहले से ही सक्रिय" संस्करण को निर्दिष्ट करें।

फिर, आपको अपने ऐप के लिए उपयोग होने वाले रेक संस्करण को अपडेट करने के लिए बंडल बताने की आवश्यकता होगी:

bundle update rake

यह आपके Gemfile.lockलिए अपना अपडेट देगा ।


2
यह मेरे लिए काम नहीं किया। जब मैं इस कमांड को चलाता हूं तो यह 'बंडल इंस्टाल' के समान काम करता है और यह दिखाता है कि यह उसी रेक संस्करण का उपयोग कर रहा है। यह इसे अद्यतन नहीं करता है।
EE33

5
मुझे अपने मणिफाइल में मणि 'रेक', 'वर्जन #' जोड़ना था और अपने जेमफाइल के लिए 'बंडल अपडेट रेक' चलाना था। उन लोगों के लिए FYI जो उनके लिए काम करने के लिए इस समाधान को प्राप्त नहीं कर सके।
EE33

44

जहाँ आप वर्तमान में जैसे रेक कमांड का उपयोग कर रहे हैं

rake db:migrate

इसके बजाय इसका उपयोग करें:

bundle exec rake db:migrate

जब तक रेल का नवीनतम संस्करण और / या रेक एक साथ अच्छी तरह से काम नहीं करेंगे तब तक यही स्थिति रहेगी।


3
"रेल और / या रेक के नवीनतम संस्करण" के बारे में एक साथ काम करने के बारे में बिट का केवल एक विशिष्ट, अनाम, समय पर अर्थ और उपयोग में काम के प्रवाह के बारे में कुछ विशिष्ट मान्यताओं के तहत अर्थ है। मुझे लगता है कि यह निहितार्थ है "आप एक खून बह रहा है धार का उपयोग कर रहे हैं, और रेक अभी तक पकड़ा नहीं गया है।" लेकिन उस मामले को "बंडल निष्पादित" या "एडिट जेमफाइल" दृष्टिकोणों द्वारा भी हल किया जा सकता है, और ये दृष्टिकोण समस्या का समाधान भी करते हैं जब कोई आंतरिक संगतता समस्याएं नहीं होती हैं, लेकिन केवल एक गड़बड़ वर्कफ़्लो इतिहास।
jackr

24

मैं डोब्री डेन को धन्यवाद देता हूं, दोस्त की जयकार करता हूं। लेकिन थोड़ा और मुझे करना था। यहाँ समाधान (मेरे लिए काम करता है) है। मैंने जोड़ा था

gem 'rake','0.8.7'

जेमफाइल पर, जो वहां नहीं था, लेकिन मेरा नया संस्करण रेल स्वचालित रूप से रेक (0.9.0) स्थापित करता है।

मेरे द्वारा rake0.9.0 को हटाने के gem uninstall rake बाद और करने के बाद bundle update rake, मैं डेटाबेस बना और माइग्रेट कर सकता हूँ।



7

उस संस्करण को निर्दिष्ट करें जिसे आप अपने जेमफाइल में चाहते हैं।

gem 'rake', '0.9.0' 

फिर

bundle update rake

आपको अपने रेक कार्य को चलाने के लिए बंडल निष्पादन का उपयोग करने की आवश्यकता है

bundle exec rake db:migrate

बाद के संस्करण को "अन-एक्टिवेट" नहीं करता है। हालांकि पूरी तरह से रेक को हटाना और फिर से काम करना, हालांकि।
जोसेफ

6

ओह देखो, यह भविष्य है। मेरे लिए, यह शिकायत थी कि मैंने 10.x को रेक लगाया था जब यह 0.9.5 चाहता था। यकीन नहीं, रूबी के साथ पर्याप्त परिचित नहीं है जो वास्तव में हाल के संस्करण संख्याओं के लिए खोदने के लिए हुआ था, लेकिन मैंने जो किया वह था:

gem uninstall rake
gem install rake -v 0.9.5

सिस्टम को रेक के संस्करण को स्थापित करने के लिए मजबूर करना है जो ऐप चाहता था (मेरे लिए यह ऑक्टोप्रेस था)।


2
भविष्य कहा जाता है, और यह आपके हैमर पैंट उधार लेना चाहता है।
कीथ लेयने

हाय, यह फिर से भविष्य है। मैंने सुना है कि हैमर पैंट अंत में वापसी कर रहे हैं।
उपविजेता

5

मुझे यह समस्या थी (दूसरे रत्न के साथ जो रेक नहीं था) और मैं इसे ठीक करने में सक्षम था

gem uninstall <complaining gem>
gem install <complaining gem>

bundle install
bundle update

ध्यान दें कि कीवर्ड 'sudo' का उपयोग नहीं किया गया था (यानी। sudo बंडल इंस्टॉल) जो आपके मणि को निर्देशिकाओं में रख सकता है, जहाँ आपके रेल एप्लिकेशन को खोजा नहीं जा सकता है।


3

अगर मैं समझता हूं कि आप क्या नहीं पूछ रहे हैं, तो आपको अपनी Gemfileफ़ाइल खोलने और लाइन बदलने की आवश्यकता है ...

gem 'rake', '0.8.7'

...सेवा...

gem 'rake', '0.9.0'

क्या होगा यदि मैं 0.9 के बजाय 0.8.7 का उपयोग करना चाहता हूं?
कीर

6
रेक रत्न डिफ़ॉल्ट रूप से आपके Gemfile में निर्दिष्ट नहीं है क्योंकि यह रेल निर्भरता है। यदि आपने रेक रत्न को 0.9.0 में अपडेट किया है, तो आपके पास अभी भी आपके सिस्टम पर 0.8.7 रत्न है (साथ में देखें gem list)। मुझे पूरा यकीन है कि अगर gem 'rake', '0.8.7'अभी भी आपके द्वारा निर्दिष्ट किया गया है Gemfile.lock, तो यह अभी भी एक समस्या के बिना 0.8.7 मणि का उपयोग करेगा। यदि नहीं, तो अपने Gemfile (नहीं .lock) में bundleजोड़ने के बाद चलाने का प्रयास gem 'rake', '~> 0.8.7'करें और देखें कि क्या यह कुछ कहता है।
दिनानु

मैं @ डोबी डेन से सहमत हूं।
ओलिवियर एल।

मणि 'रेक' परिभाषित नहीं है। यदि मेरे पास एक से अधिक जेम रेक (0.8.7 और 0.9.0) है, तो यह डिफ़ॉल्ट रूप से होता है। क्या हम पुराने को डिफ़ॉल्ट बना सकते हैं?
मुजाहिद मस्क़ी

3

इसे अपने जेमफाइल में जोड़ें

# Rake 0.9.0 break Rails.
gem "rake", "!= 0.9.0"

और फिर रेक-0.9.0 की स्थापना रद्द करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.