रूबी ऑन रेल्स एंड रेक प्रॉब्लम्स: अनइंस्टाल्यूटेड कंटिन्यू रेक :: डीएसएल


189

मैं एक बहुत निराशा की बात कर रहा हूँ: रेक गूंगा हो रहा है।

यहाँ समस्या के बारे में बताया गया है:

$ rails new test_app
$ rails generate scaffold new_scaffold field1:string field2:text

वे दोनों ही ठीक काम करते हैं, लेकिन तब जब मैं ऐसा करता हूं,

$ rake db:migrate

मुझे निम्नलिखित त्रुटि मिलती है।

(in /home/mikhail/test_app)
rake aborted!
uninitialized constant Rake::DSL
/usr/lib/ruby/1.9.1/rake.rb:2482:in `const_missing'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:6:in `<module:Rake>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:3:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `require'
/usr/lib/ruby/gems/1.9.1/gems/rake-0.9.0/lib/rake/rdoctask.rb:20:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `each'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/tasks.rb:6:in `<top (required)>'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `require'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:214:in `initialize_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:139:in `load_tasks'
/usr/lib/ruby/gems/1.9.1/gems/railties-3.0.7/lib/rails/application.rb:77:in `method_missing'
/home/mikhail/test_app/Rakefile:7:in `<top (required)>'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/bin/rake:31:in `<main>'

मैंने इसी तरह की / समान त्रुटियों के लिए इंटरनेट के बारे में देखा है, और लोगों ने उन्हें देखा है। बस कोई भी इस समस्या को हल करने के लिए लगता है!

मैं इस समस्या को कैसे हल करूं?

जवाबों:


193

डीएचएच का एक ट्वीट । रेक .9.0 रेल और कई अन्य चीजों को तोड़ता है, आपको इसकी आवश्यकता है:

gem "rake", "0.8.7"

अपने जेमफाइल में।


17
इसने मेरे लिए काम किया। मुझे bundle update rakeपहले करने की जरूरत थी । फिर मैंने चेक किया bundle show rake। इसे 0.8.7 कहना चाहिए। तब rake db:migrate
बी सेवन

26
या इससे भी बेहतर gem "rake", "!= 0.9.0":। यह टूटी हुई 0.9.0 रिलीज़ से बचा जाता है, लेकिन नए सिरे से रिलीज़ होने के बाद प्रकाशित होने के बाद यह नए सिरे से अपडेट हो जाएगा (इसे बाद में चोट नहीं पहुंचाएगा, लेकिन इसे रखने से या तो चोट नहीं लगनी चाहिए)।
स्पाइरलिस

6
@ सर्पिलिस I भी संस्करण 0.9.2 के साथ इस मुद्दे पर चला गया। इसलिए आपको कुछ संस्करणों के लिए उस पंक्ति को जोड़ना पड़ सकता है।
dharmatech

3
इस समाधान ने मेरे लिए काम किया । @ डार्मेटेक की तरह, मेरे पास यह मुद्दा आया है heroku rake db:migrateऔर यह इसे ठीक करने के लिए लग रहा था। याद रखें कि आगे बढ़ने से पहले इन परिवर्तनों को जोड़ना और प्रतिबद्ध करना;)
प्रूव करें

1
यह रेल के लिए काम कर सकता है, लेकिन मुझे यह sudo gem install rakeसुनिश्चित करने के लिए भी करना था कि rakeकमांड लाइन से मैं जिस संस्करण को कॉल कर रहा था वह 0.8.7 नहीं था।
शरद ऋतु

72

मैंने अपने पिछले उत्तर के बाद कुछ शोध किया (क्षमा करें, मुझे इससे पहले करना चाहिए)।

सभी समस्याओं को रेक रत्न 0.9.2 के साथ हल किया गया है। मैंने इन चरणों का पालन किया:

  • मैंने स्थापित किया gem install rake -v=0.9.2(मेरे पास 0.9.1 रत्न था)
  • के साथ 0.9.1 निकाल दिया gem uninstall rake -v=0.9.1
  • के साथ अद्यतन किया गया bundle update
  • फिर db:migrateएक चेतावनी दी,WARNING: Global access to Rake DSL methods is deprecated. Please....

    इसे रेक फ़ाइल में निम्न जोड़कर हल किया गया था।

    module ::YourApplicationName  
      class Application
        include Rake::DSL
      end
    end
  • मैंने module ::RakeFileUtils extend Rake::FileUtilsExtend@databyte द्वारा मुकदमा दायर किया।

इसका मतलब है कि रेक रत्न 0.9.2 ठीक काम करता है!


पहले तीन चरणों का पालन किया और मुझे कोई चेतावनी नहीं मिली ताकि बाकी लोगों से परेशान न हों, सुझाव के लिए धन्यवाद!
अबे पेट्रिलो

1
यह मुझसे पूछने के लिए भीख माँगता है ... मुझे उस सुविधा को बनाए रखने के लिए रेक को हैक क्यों करना चाहिए? रेक क्या करने की कोशिश कर रहा है, और मुझे अब क्या उपयोग करना चाहिए?
रेयान्मट

@Arrumaco, रेक फ़ाइल के लिए निर्देशिका क्या है?
सीटीक

यह की लायक यह देखते हुए कि के अलावा RakeFileपहले होना चाहिए require 'rake'- मुझे बाहर पकड़ा :)
सियारन आर्चर

12
एक ही मुद्दा है, लेकिन मेरे पास पहले से ही रेक था (0.9.2, 0.8.7)। फिर से स्थापित करना 0.9.2 समस्या को ठीक करने के लिए लगता है, हालांकि: 1) gem uninstall rake -v=0.9.22)gem install rake -v=0.9.2
डी.के.

54

Railstutorial (Demo_app) के अध्याय 2 के माध्यम से जा रहा है और इस समस्या में भाग गया। मैंने यहां सूचीबद्ध सभी अन्य उत्तरों की कोशिश की, लेकिन जब तक मैंने ऐसा नहीं किया, तब तक यह काम नहीं कर सका:

इसे अपने रैकेफाइल में ऊपर रखिए 'रेक' की आवश्यकता है:

require 'rake/dsl_definition'

के माध्यम से कैसे अनधिकृत निरंतर रैक को ठीक करने के लिए :: Heroku पर DSL समस्या?

मैंने भी गिथब और हरोकू को सभी फाइलों की सिफारिश की और धक्का दिया।


यह ०.३.२ से ०. break. from तक डाउनग्रेड करने के बाद से सबसे अच्छा उत्तर लगता है, प्रत्येक मामले के आधार पर कुछ रत्न निर्भरता को तोड़ देगा, जैसे मेरा :) धन्यवाद!
डिएगासलाज़ार

यह मेरे लिए काम नहीं करता है। मुझे "ऐसी कोई फ़ाइल लोड करने के लिए नहीं मिलती है - रेक / dsl_definition" जब रेक db कर रहा हो: क्रिएट
KMC

25

मुझे बस इतना करना था:

gem install rake

मेरे पास पहले से ही संस्करण 0.9.2 था, बस स्थापित करने की आवश्यकता थी।


वाह यह मेरे लिए काम किया। लेकिन क्या आप बता सकते हैं कि मुझे रेक क्यों लगाना है जबकि मुझे रेक पहले से ही होना चाहिए?
केएमसी

मैं वास्तव में अभी भी एक विशेषज्ञ नहीं हूं, लेकिन मेरी समझ यह है कि आपके पीसी पर रत्नों को स्थापित करने और उन्हें एक रत्न रजिस्ट्री में स्थापित करने के बीच अंतर है - मुझे संदेह है कि रूबी स्थापना को यह जानने की जरूरत है कि कौन से रत्न हैं अपने पीसी पर कहाँ शायद यह कुछ ऐसा है जो भविष्य में स्वचालित हो सकता है, या पहले से ही कुछ रूबी वितरण में स्वचालित है ...
ब्रानस्टार

19

रेक रत्न को पुनर्स्थापित करें और इसे ठीक काम करना चाहिए :

gem uninstall rake -v=0.9.2 
gem install rake -v=0.9.2

यदि नहीं, तो अपने Gemfile में संस्करण '0.8.7' निर्दिष्ट करें।


इस दृष्टिकोण ने मेरे लिए काम किया और मैंने संस्करण को डाउनग्रेड नहीं करने को प्राथमिकता दी ..
Tarnschaf

मेरे लिए भी काम किया, केवल रेक के लिए -v 0.9.2.2
हस्पीमुलेटर 18

10

बुंडलर का उपयोग नहीं करने पर:

sudo gem install rake -v 0.8.7
sudo gem uninstall rake

फिर 0.9.0 की स्थापना रद्द करने का चयन करें।


यह मेरे लिए बंडल के बिना तय किया (रेल 2.3.8)। रेक को 0.9.2 स्थापित करने की कोशिश की थी, लेकिन उसने इसे ठीक नहीं किया। 0.8.7 स्थापित करना और 0.9.2 की स्थापना रद्द करना मेरे लिए आखिरकार क्या था।
माइकल ड्यूरेंट

8

अगर मेरी तरह आप रेक पर अटके हैं 0.8.7, और आप रेल का उपयोग कर रहे हैं 3.2.x तो रेल रेक के लिए एक आवश्यकता जोड़ता है - डीएसएल

इसे हल करने के लिए, अपने रैकेफाइल के शीर्ष पर आपको जोड़ना चाहिए:

module Rake
  module DSL
  end
end

7

मैंने निम्न चरणों के साथ एक ही समस्या हल की है:

जेमफाइल में:

gem 'rake', '0.9.2'

फिर इसे कंसोल पर चलाया:

sudo bundle update rake

फिर Rakefile के लिए निम्न पंक्तियाँ जोड़ी गईं:

require 'rake/dsl_definition'
include Rake::DSL

6

रेलगाड़ी 3.1.rc1 को अद्यतन किया गया है। अपने स्वयं के Rakefiles के लिए, आप इसे load_tasks पर कॉल करने से पहले जोड़ सकते हैं।

module ::YourApplicationName
  class Application
    include Rake::DSL
  end
end

module ::RakeFileUtils
  extend Rake::FileUtilsExt
end

https://gist.github.com/4cd2bbe68f98f2f0249f

अद्यतन: यह भी देखा कि यह पहले से ही यहाँ के रूप में अच्छी तरह से जवाब दिया है: अपरिभाषित विधि 'कार्य' रेक 0.9.0 का उपयोग कर


4

मेरे पास एक ही मुद्दा था और 0.9.0 के बजाय रेक 0.8.7 मणि का उपयोग करना था।


4

मैं एक Windows XP उपयोगकर्ता हूं और मुझे भी यही समस्या थी।

मैंने मणि में "रेक", "0.8.7" दर्ज किया और फिर कमांड विंडो से निम्नलिखित टाइप किया।

bundle update rake

इससे मेरी समस्या ठीक हो गई।


मेरे लिए भी काम किया, आज की तरह। बस Win7 पर रेल कोड करने की कोशिश कर रहा है।
arscariosus

4
  1. अपने प्रोजेक्ट पथ पर जाएं
  2. प्रकार bundle install --path=vendor/bundle
  3. प्रकार bundle exec rake db:migrate

सर्वर प्रकार शुरू करने के लिए bundle exec rails sबंडल निष्पादन का उपयोग करें और आप सुनिश्चित करेंगे कि आप अपनी परियोजना के लिए सही रत्न (आवश्यक संस्करण) का उपयोग करें। इसके अलावा, मैं आपको सलाह दूंगा vendor/bundleकि .gitignoreयदि आप इसका उपयोग करते हैं gitऔर इसके लिए उपनाम बनाते हैं bundle exec। यदि आप उपयोग zshकरते हैं तो आप इस दृष्टिकोण का अनुसरण कर सकते हैं


3

ऊपर Branstar के रूप में भी - धन्यवाद Branstar!

  • ओएस: विंडोज विस्टा
  • स्तर: पटरियों पर रूबी के लिए पूरी तरह से नया
  • मैं पहले से ही रूबी 1.9.2 स्थापित था

मैंने विंडोज पर रनिंग रेल 3 में निर्देशों का पालन किया

सभी ने "रेक डीबी: माइग्रेट" भाग तक काम किया, जिसने मुझे मूल पोस्ट के समान आउटपुट दिया।

मैं भागा:

gem install rake

मैं फिर भागा:

rake db:migrate

तब मैं रूबी सर्वर पर रूबी शुरू करने में सक्षम था और उसके पास सब कुछ था।

धन्यवाद फिर से branstar :-)


2

मैं तुम्हारे लिए (mikhailvs) महसूस करता हूं, यह वास्तव में निराशाजनक है। मैं लगभग पूरे एक दिन पागल हो रहा हूं। मैंने रूबी और उसकी सभी आश्रित फाइलों को भी अनइंस्टॉल कर दिया और अपने पीसी को बंद कर दिया, लेकिन मुझे अभी भी वही समस्या है।

त्रुटि संदेश से मुझे जो मिला है वह रेक 0.9.2 के साथ समस्या है। ऐसा लगता है कि यह पूरी तरह से स्थापित नहीं था। इसलिए मुझे पुनः स्थापित करना पड़ाgem install rake -v=0.9.2

मुझे यकीन नहीं था कि मेरे पास रेक -v0.9.1 है। इसलिए यह सुनिश्चित करने के लिए कि मैं सुरक्षित हूं मैंने उस पुराने संस्करण को हटाने की कोशिश की gem uninstall rake -v=0.9.1। लेकिन मुझे त्रुटि संदेश दिखाया गया है

ERROR:  While executing gem ... (Gem::InstallError)
    cannot uninstall, check `gem list -d rake`

ठीक है, इसलिए मैंने अपने पीसी पर सभी रेक निर्देशिकाओं की जांच की, और पाया कि मेरे पास केवल रेक 0.9.2 था। फिर यह जांचने के लिए कि क्या सब कुछ ठीक हो गया, मैं साथ चला गया rake db:migrate। और यह काम किया :)

मुझे लगता है कि मेरे पास रेक 0.9.1 नहीं था क्योंकि मैंने रूबी (रूबी इंस्टॉलर -1.9.2-p180 - अपने विंडोज 7 सिस्टम पर) और सभी रत्नों को भी साफ किया था । इस बीच रेक 0.9.2 पूरी तरह से स्थापित नहीं था।


2

मेरे लिए काम करने वाले "रत्न अनइंस्टॉल रेक" के साथ अनइंस्टॉल करना, मेरे पास 2 संस्करण स्थापित थे, इसलिए मैंने जेस्ट को क्लीन रीइनस्टॉल किया।

"रेक डीबी: क्रिएट" , यह सुनिश्चित करने के लिए कि डेटाबेस मौजूद है और फिर डील को सील करने के लिए "रेक डीबी: माइग्रेट करें"


2

मेरे पास वही मुद्दा था जो रेक 0.9.2.2 का उपयोग कर रहा था। मैंने बंडल निष्पादन का उपयोग करके इस समस्या को हल किया।



0

रेक 0.8.7 स्थापित करें और 0.9.2.2 की स्थापना रद्द करें

$ gem install rake -v 0.8.7
$ gem uninstall rake -v 0.9.2.2

अब उपयोग करें

$ bundle exec rake db:migrate

मुझे लगता है कि यह आपकी मदद करेगा;)


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