Uninitialized स्थिर रैक को कैसे ठीक करें :: Heroku पर DSL समस्या?


101

मैं लोगों के लिए इसी तरह त्रुटियों हो रही है में इन सवालों को छोड़कर मेरा पर उत्पन्न कर रहे हैं Heroku :

2011-05-30T09:03:29+00:00 heroku[worker.1]: Starting process with command: `rake jobs:work`
2011-05-30T09:03:30+00:00 app[worker.1]: (in /app)
2011-05-30T09:03:30+00:00 heroku[worker.1]: State changed from starting to up
2011-05-30T09:03:33+00:00 app[worker.1]: rake aborted!
2011-05-30T09:03:33+00:00 app[worker.1]: uninitialized constant Rake::DSL
2011-05-30T09:03:33+00:00 app[worker.1]: /app/.bundle/gems/ruby/1.9.1/gems/rake-0.9.0/lib/rake/tasklib.rb:8:in `<class:TaskLib>'

उन सवालों के जवाब निर्दिष्ट प्रतीत होते हैं gem 'rake', '0.8.7'क्योंकि 0.9 संस्करण समस्या का कारण बनता है।

जब मैं gem 'rake', '0.8.7'अपने रत्न को जोड़ने की कोशिश करता हूं और हरकू को धक्का देता हूं तो मुझे यह त्रुटि मिलती है:

Unresolved dependencies detected; Installing...
You have modified your Gemfile in development but did not check
the resulting snapshot (Gemfile.lock) into version control

You have added to the Gemfile:
* rake (= 0.8.7)
FAILED: http://devcenter.heroku.com/articles/bundler
! Heroku push rejected, failed to install gems via Bundler
error: hooks/pre-receive exited with error code 1
To git@heroku.com:my_app.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:my_app.git'

मेरा मणिफाइल सामान्यतः हरोकू पर ठीक काम करता है। मुझे क्या करना चाहिए?


क्या आपने # 3 उत्तर पोस्ट करने की कोशिश की ? उन परिवर्तनों को करने के बाद क्या हुआ?
ज़ब्बा

जवाबों:


205

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

require 'rake/dsl_definition'

3
धन्यवाद। इससे मेरी समस्याएं ठीक हो गईं और मुझे नहीं पता था कि क्या चल रहा है। (विंडोज़ पर रेल इंस्टॉलर का उपयोग करना और एक पूर्ण शुरुआत के रूप में हरोकू को तैनात करना।)
जैक वी।

1
क्या यह सॉल्यूशन खिड़कियों पर काम करता है क्योंकि मुझे अभी भी वही त्रुटि मिल रही है - अनइंस्टाल्यूटेड कंटिन्यू रेक :: डीएसएल
डेविड

2
मुझे हेरोकू को तैनात करने में त्रुटि हुई, जिसे आज रेक में 0.9.2 पर खींच लिया गया। चूंकि मूल मुद्दा 0.9.0 के साथ था, शायद रेक संस्करण अब समस्या नहीं है। requireरेकफाइल (और पुन: प्रवेश करने और गितुब और हेरोकू को फिर से धकेलने) के लिए लाइन जोड़कर इसे हल किया। @ डेविड, मैं रेलरेलर 1.2.0 से RoR फ्रेमवर्क के साथ विंडोज का उपयोग कर रहा हूं।
मार्क बेरी

वैसे आपको इस काम के लिए 0.9.2 रेक को अपडेट करना होगा। सौभाग्य!
रूबीफैनेटिक

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

8

जब भी आप अपने जेमफाइल को बदलते हैं, तो आपको अपना लॉकफाइल bundle install(Gemfile.lock) अपडेट करने की आवश्यकता होती है। आप जिस त्रुटि पर जोर दे रहे हैं वह रेक के संस्करण को बदलने के लिए विशिष्ट नहीं है।

bundle install
git commit -a -m "update lockfile"
git push heroku master

आपको प्राप्त त्रुटि संदेश पर ध्यान दें:

आपने अपने Gemfile को विकास में संशोधित किया है, लेकिन परिणामी स्नैपशॉट (Gemfile.lock) को संस्करण नियंत्रण में नहीं देखा है


1
आपको Gemfile.lock को फिर से बनाने के लिए "बंडल अपडेट रेक" चलाने की आवश्यकता हो सकती है।
जन हेटिच

6

मैंने इसे हल कर लिया, आखिरकार, बहुत सारे मैकिंग के बाद। मैंने जो कुछ भी किया, उसका छोटा संस्करण, कई प्रयोगों को याद कर रहा था, यह था:

1) रेक 0.8.7 निर्दिष्ट करने के लिए जेमफाइल को बदलें

#in Gemfile
gem "rake", "0.8.7"

2) एक हैक बाहर निकालो जो मैंने पहले स्टैक ओवरफ्लो प्रश्न के आधार पर रेकफाइल में जोड़ा था, रूबी ऑन रेल्स एंड रेक समस्याएं: अनइंस्टाल्यूटेड कंटिन्यूअस रेक :: डीएसएल :

इसलिए, मेरा राकफाइल अब मेरे ऐप के लिए मानक राकफाइल होने जा रहा है:

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require File.expand_path('../config/application', __FILE__)
require 'rake'

MyApp::Application.load_tasks

3) रूबी 1.9.2 में अपना ऐप चलाने के लिए हरोकू बदलें:

heroku stack:migrate bamboo-mri-1.9.2 --app myapp
git push heroku master

और यह अब ठीक लगता है - अनुसूचित क्रोन कार्य वैसे भी चल रहा है।

संपादित करें: यह था कि ठीक चलाने के लिए, एक बार, फिर पुन: अगली बार जब मैं कुछ धक्का दिया ऊपर विस्फोट से उड़ा दिया! अरे। मुझे लगता है कि मैंने इसे अभी तय कर लिया है, delayed_jobमणि के अतिरिक्त , बातचीत के आधार पर पता नहीं कैसे कार्य कार्य का निर्माण करना है: काम

स्थापित करना delayed_jobएक महान समाधान की तरह प्रतीत नहीं होता है, लेकिन यह एचएएस ने काम किया है, और मैं इसे कुछ समय के लिए उपयोग करना चाहता हूं, विशेष रूप से हेरोकू के प्रति-घंटे क्रॉन जॉब के साथ (जो कि बस लगातार पर्याप्त नहीं है - ऐसी चीजें हैं जो मैं हूं) शायद हर पाँच मिनट में दौड़ना चाहता हूँ)। delayed_jobमणि स्थापित करने के बाद मुझे इसके लिए सेटअप करना था, अन्यथा हरोकू गुमशुदा delayed_jobsटेबल के बारे में शिकायत करता है :

#add to gemfile
gem 'delayed_job'

#at command line
bundle install
rails g delayed_job
rake db:migrate
git add -A
git commit -a -m "added delayed_job gem"
git push
heroku rake db:migrate --app myapp
heroku restart --app myapp

1

मेरे पास एक रेल 3.0.11 ऐप था, जो कि संस्करण 0.9.2 रेक के आसपास प्राप्त करने के लिए जेमफाइल में रेक संस्करण 0.8.7 निर्दिष्ट करता था।

जब मैंने ऐप को रेल्स 3.2.0 (हेरोकू सीडर स्टैक) में बदल दिया, तो मुझे कार्यकर्ता (एक रेक कार्य) के दुर्घटनाग्रस्त होने की समस्या हो रही थी। मैंने "मणि 'रेक', '0.8.7'" को "मणि 'रेक' में बदल दिया, जिसने रेक संस्करण 0.9.2.2 को बंडल किया। नए संस्करण के साथ कार्यकर्ता दुर्घटनाग्रस्त हो गया।


0

आपकी समस्या Gemfile.lockफ़ाइल को न हटाने के कारण होती है और हरोकू के लिए विशिष्ट नहीं है। हटाने से Gemfile.lockइस समस्या को ठीक किया जाना चाहिए, लेकिन आपको सीधे दूसरे पर ले जाएगा:

To git@heroku.com:tailored-landing-pages.git
 * [new branch]      master -> master
manfred@painstation2:~/Desktop/projects/ror/ta/tlp307$ heroku rake db:migrate
rake aborted!
ninitialized constant Rake::DSL
/app/Rakefile:13:in `<class:Application>'
/app/Rakefile:12:in `<module:Tlp307>'
/app/Rakefile:11:in `<top (required)>'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2373:in `load'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2373:in `raw_load_rakefile'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2007:in `block in load_rakefile'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2006:in `load_rakefile'
/usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:1991:in `run'
/usr/ruby1.9.2/bin/rake:31:in `<main>'

दुर्भाग्य से, मुझे उस समस्या का समाधान अभी तक नहीं मिला है, क्योंकि रेक को 0.8.7 पर अपग्रेड करने से यहां काम नहीं लगता है। अगर किसी और का जवाब है, तो मैं इसकी बहुत सराहना करूंगा।


4
मैं कभी भी आपकी तालाबंदी को हटाने की सिफारिश नहीं करूंगा।
वुपुता

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