হিরোকুতে অবিচ্ছিন্ন ধ্রুবক রেক :: ডিএসএল সমস্যাটি কীভাবে ঠিক করবেন?


101

আমি বেশী অনুরূপ ত্রুটি পাচ্ছি মধ্যে এই প্রশ্ন ছাড়া খনি উপর occuring হয় 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.0 ছিল, তাই রাক সংস্করণটি আর সমস্যা নেই। যোগ করার পদ্ধতি requirerakefile লাইন (এবং recommitting এবং GitHub পুনরায় ঠেলাঠেলি এবং Heroku) এটি সমাধান। @ ডেভিড, আমি রেলআইন্সটলার 1.2.0 থেকে রআর ফ্রেমওয়ার্ক সহ উইন্ডোজ ব্যবহার করছি।
মার্ক বেরি

ভাল এটি কাজ করার জন্য আপনাকে 0.9.2 রাকে আপডেট করতে হবে। শুভকামনা!
রুবিফ্যান্যাটিক

রেক ডিবি করার সময় আমি এই ত্রুটিটি পেয়েছি: তৈরি করুন, "লোড করার জন্য এ জাতীয় কোনও ফাইল নেই - রেক / ডিএসএল_ডিফিনিশন"
কেএমসি

8

যে কোনও সময় আপনি আপনার গেমফিল পরিবর্তন করেন, আপনাকে bundle installআপনার লকফিল (জেমফিল.লক) আপডেট করতে হবে। আপনি যে ত্রুটিটি চাপ দিচ্ছেন তা রাকের সংস্করণ পরিবর্তন করার জন্য নির্দিষ্ট নয়।

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

আপনি প্রাপ্ত ত্রুটি বার্তাটি নোট করুন:

আপনি আপনার জেমফিলকে বিকাশে পরিবর্তন করেছেন তবে ফলাফল স্ন্যাপশট (জেমফিল.লক) সংস্করণ নিয়ন্ত্রণে পরীক্ষা করেছেন না


1
জেমফিল.লকটি পুনরায় জেনারেট করতে আপনার "বান্ডেল আপডেট রেক" চালানোর দরকার হতে পারে।
জান হেটিচ

6

আমি এটিকে সমাধান করেছি, অবশেষে প্রচুর পরিহাসের পরে। আমি যা করেছি তার সংক্ষিপ্ত সংস্করণটি, বহু পরীক্ষা-নিরীক্ষা বাদ দিয়েছিল:

1) রেক 0.8.7 নির্দিষ্ট করতে গেমফিল পরিবর্তন করুন

#in Gemfile
gem "rake", "0.8.7"

২) একটি হ্যাক বের করুন যা আমি পূর্বে রেল এবং রকে সমস্যার উপর স্ট্যাক ওভারফ্লো প্রশ্নে রুবির উপর ভিত্তি করে রাকফাইলে যুক্ত করেছি : অবিচ্ছিন্ন ধ্রুবক রেক :: ডিএসএল :

সুতরাং, আমার রেকফিলটি এখন আমার অ্যাপ্লিকেশনটির জন্য স্ট্যান্ডার্ড রেকফিল হিসাবে ফিরে এসেছে:

# 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) রুবি ১.৯.২-এ আমার অ্যাপ্লিকেশন চালাতে হেরোকুকে পরিবর্তন করুন:

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

আমার কাছে একটি রেলস .1.০.১১ অ্যাপ্লিকেশন রয়েছে, যা রেক :: ডিএসএল সমস্যাটি প্রায় ৪.৯.২ সংস্করণটি পেতে গেমফিলে রেক সংস্করণ ০.৮..7 নির্দিষ্ট করেছে।

আমি অ্যাপটিকে রেলস ৩.২.০ (হেরোকু সিডার স্ট্যাক) এ রূপান্তরিত করার পরে, আমার কর্মী (একটি রেক টাস্ক) ক্র্যাশ হয়ে সমস্যা হয়েছে। আমি "রত্ন 'রাক', '০.৮..7'" "রত্ন রেক" "এ পরিবর্তন করেছি, যা রেক সংস্করণকে ০.৯.২.২ বান্ডিল করেছে। শ্রমিক নতুন সংস্করণে ক্রাশ বন্ধ করে দিয়েছে।


0

আপনার সমস্যাটি Gemfile.lockফাইলটি মোছা না করে এবং হেরোকুর সাথে নির্দিষ্ট নয় caused মোছা 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
আমি কখনই আপনার লকফিল মুছে ফেলার পরামর্শ দেব না।
wuputah

2
আপনার জেমফিল.লকটি মোছার ফলে প্রতিটি রত্নের সবথেকে সর্বশেষ সংস্করণ হিরকুতে স্থাপন করা হবে (আপনি জেমফাইলে সমস্ত সংস্করণ পিন না করে)।
ক্লিমেট মাম্যকিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.