রুবে অন রেলস এবং রেক সমস্যা: অবিচ্ছিন্ন ধ্রুব রেক :: ডিএসএল


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

এর আগে ডিএইচএইচের একটি টুইট । Rake .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
@ স্পিরালিস আমি এই সংস্করণে 0.9.2 সংস্করণ দিয়ে দৌড়েছি। সুতরাং কয়েকটি সংস্করণের জন্য আপনাকে সেই লাইনটি যুক্ত করতে হতে পারে।
ধর্মটেক

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ডাটাবাইটের দ্বারা বর্ধিত বিকল্পটি বাদ দিয়েছি।

এর অর্থ রেক মণি 0.9.2 জরিমানা করে!


প্রথম তিনটি পদক্ষেপ অনুসরণ করেছে এবং আমি কোনও সতর্কতা পাইনি তাই বাকীগুলি নিয়ে মাথা ঘামান না, পরামর্শের জন্য ধন্যবাদ!
আবে পেট্রিলো

1
এটি আমাকে জিজ্ঞাসা করতে অনুরোধ করে ... কেন এই বৈশিষ্ট্যটি ধরে রাখতে আমি রাকে হ্যাক করব? রাক কী করার চেষ্টা করছে এবং আমার এখন কী ব্যবহার করা উচিত?
রায়য়ান্ট

@ আর্রুমাকো, রেক ফাইলের জন্য ডিরেক্টরি কী?
সিটাক

এটি লক্ষণীয় যে, RakeFilerequire '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

রেলস্টিউটোরিয়াল (ডেমো_অ্যাপ) এর দ্বিতীয় অধ্যায়টি দিয়ে গিয়ে এই সমস্যায় পড়ে। আমি এখানে তালিকাবদ্ধ অন্যান্য সমস্ত উত্তর চেষ্টা করেছি, কিন্তু আমি এটি না করা পর্যন্ত এটি কাজ করতে পারা যায় না:

উপরে আপনার রেকফিল এ রাখুন 'রেক' প্রয়োজন:

require 'rake/dsl_definition'

মাধ্যমে কিভাবে Heroku উপর uninitialized ধ্রুবক Rake :: ডিএসএল সমস্যাটি সমাধানের জন্য?

আমি পুনরায় স্বীকার করে সমস্ত ফাইলকে গিথুব এবং হিরোকুর দিকে ঠেলে দিয়েছিলাম।


এটি 0.9.2 থেকে 0.8.7 থেকে ডাউনগ্রেড করার পর থেকে সর্বোত্তম উত্তরের মতো মনে হচ্ছে প্রতিটি ক্ষেত্রে যেমন রত্ন নির্ভরতা ভেঙে দেয়, যেমন খনি হিসাবে :) ধন্যবাদ!
দিয়েগোসালাজার

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

25

আমার যা করার দরকার তা হ'ল:

gem install rake

আমার কাছে ইতিমধ্যে 0.9.2 সংস্করণ ছিল, কেবল ইনস্টল করা দরকার।


বাহ এটা আমার জন্য কাজ করে। তবে আপনি কী ব্যাখ্যা করতে পারেন আমাকে রেক কেন আগে থাকতে হবে যখন সেখানে রেক থাকা উচিত?
কেএমসি

আমি এখনও সত্যই বিশেষজ্ঞ নই, তবে আমার বোধগম্যতা হ'ল আপনার পিসিতে 'রত্ন স্থাপন' এবং রত্ন রেজিস্ট্রিগুলিতে 'ইনস্টল' করার মধ্যে পার্থক্য রয়েছে - আমার সন্দেহ এই কারণ কারণ রুবি ইনস্টলেশনটি কোন রত্নগুলি জানতে হবে তা জানতে হবে আপনার পিসি যেখানে সম্ভবত এটি এমন কিছু যা ভবিষ্যতে স্বয়ংক্রিয়ভাবে
চালিত

19

রেক রত্নটি পুনরায় ইনস্টল করুন এবং এটি ভাল কাজ করা উচিত :

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

যদি তা না হয় তবে আপনার জেমফাইলে সংস্করণ '0.8.7' নির্দিষ্ট করুন।


এই পদ্ধতিটি আমার পক্ষে কাজ করেছে এবং আমি সংস্করণটি ডাউনগ্রেড না করা পছন্দ করি ..
টার্নশ্যাফ

আমার জন্যও কাজ করেছেন, শুধুমাত্র রেক
ভি

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

আমার মতো যদি আপনি রেক ০.৮..7 এ আটকে থাকেন এবং আপনি রেল ৩.২.x ব্যবহার করছেন তবে রেলটি রেক :: ডিএসএল এর জন্য প্রয়োজনীয়তা যুক্ত করেছে

এটি সমাধানের জন্য, আপনার রেকফিলের শীর্ষে আপনার যুক্ত করা উচিত:

module Rake
  module DSL
  end
end

7

আমি নিম্নলিখিত পদক্ষেপগুলি দিয়ে একই সমস্যাটি সমাধান করেছি:

জেমফাইলে:

gem 'rake', '0.9.2'

তারপরে এটি কনসোলে চালিত হয়েছে:

sudo bundle update rake

তারপরে রেকফাইলে নিম্নলিখিত লাইনগুলি যুক্ত করা হয়েছে:

require 'rake/dsl_definition'
include Rake::DSL

6

রেলগুলি 3.1.rc1 আপডেট করা হয়েছে। আপনার নিজের রেকফিলসের জন্য, আপনি লোড_টাস্কগুলিতে কল করার আগে এটি যুক্ত করতে পারেন।

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

আমি একজন উইন্ডোজ এক্সপি ব্যবহারকারী এবং আমারও একই সমস্যা ছিল।

আমি রত্ন "রেক", "0.8.7" রত্নটি প্রবেশ করিয়েছিলাম এবং তারপরে কমান্ড উইন্ডো থেকে নিম্নলিখিতটি টাইপ করেছি।

bundle update rake

এটি আমার সমস্যা সমাধান করেছে।


আমার জন্যও আজকের মতো কাজ করেছে। কেবল উইন 7-এ রেল কোড করার চেষ্টা করছি।
আর্সারিওসাস

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

উপরের ব্র্যানস্টার হিসাবে একই - ধন্যবাদ ব্র্যানস্টার!

  • ওএস: উইন্ডোজ ভিস্তা
  • স্তর: রেল অন রুবেলে সম্পূর্ণ নতুন
  • আমি ইতিমধ্যে রুবি 1.9.2 ইনস্টল করা আছে

আমি উইন্ডোজটিতে রেলিং 3 চালানোর নির্দেশাবলী অনুসরণ করেছি ।

সমস্ত "রেক ডিবি: মাইগ্রেট" অংশ অবধি কাজ করেছিল যা আমাকে মূল পোস্টের মতোই আউটপুট দেয়।

আমি দৌড়েছি:

gem install rake

আমি আবার দৌড়েছি:

rake db:migrate

তারপরে আমি রুবে অন রেলস সার্ভার চালু করতে সক্ষম হয়েছি এবং সমস্ত কিছু তার জায়গায় ছিল।

ধন্যবাদ আবার ব্র্যানস্টার :-)


2

আমি আপনার (মিখাইলভস) জন্য অনুভব করছি, এটি সত্যিই হতাশাব্যঞ্জক। আমি প্রায় এক পুরো দিন ধরে পাগল হয়ে যাচ্ছি। এমনকি আমি রুবি এবং তার সমস্ত নির্ভরশীল ফাইলগুলি আনইনস্টল করে আমার পিসিটি বন্ধ করে দিয়েছি, তবে আমি এখনও একই সমস্যা পেয়েছি।

ত্রুটি বার্তাটি থেকে আমি যা পেয়েছি তা হ'ল রেক ০.৯.২। দেখে মনে হচ্ছে এটি সম্পূর্ণ ইনস্টল করা হয়নি। সুতরাং আমাকে পুনরায় ইনস্টল করতে হয়েছিলgem install rake -v=0.9.2

আমি নিশ্চিত না যে আমি rav0.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 । এবং এটা কাজ করে :)

আমি মনে করি আমার কাছে রেক ০.৯.১ নেই কারণ আমি রুবি ( রুবিইনস্টলার-১.৯.২-পি 0180 - আমার উইন্ডোজ 7 সিস্টেমে) এবং সমস্ত রত্নগুলি পরিষ্কার-ইনস্টল করেছি। ইতিমধ্যে রেক 0.9.2 সম্পূর্ণরূপে ইনস্টল করা হয়নি।


2

সঙ্গে আনইনস্টল "মণি আনইনস্টল মই দিয়া আহরণ করা" আমার জন্য কাজ, আমি 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

আমি মনে করি এটি আপনাকে সাহায্য করবে;)


0

চালান

bundle exec rake db:migrate

এটা আমার জন্য কাজ করে.

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