রেক ০.৯.০ ব্যবহার করে অপরিজ্ঞাত পদ্ধতি 'টাস্ক'


132

আমি সবেমাত্র রেকে সর্বশেষ সংস্করণে আপডেট করেছি ( 0.9.0.beta.4) এবং rakeকমান্ডটি নিম্নলিখিত ত্রুটি বার্তার সাথে শেষ হয়:

rake aborted!
undefined method `task' for #<Anelis::Application:0x9223b6c>

এখানে ট্রেস দেওয়া হল:

undefined method `task' for #<Anelis::Application:0x97ef80c>
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:214:in `initialize_tasks'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:139:in `load_tasks'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'
/home/amokrane/Documents/prog/web/learning_rails/anelis/Rakefile:7:in `load_string'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `eval'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:28:in `load_string'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/environment.rb:16:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:495:in `raw_load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:78:in `block in load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:77:in `load_rakefile'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:61:in `block in run'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:129:in `standard_exception_handling'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/lib/rake/application.rb:59:in `run'
/usr/local/rvm/gems/ruby-1.9.2-p136/gems/rake-0.9.0.beta.4/bin/rake:31:in `<top (required)>'
/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `load'
/usr/local/rvm/gems/ruby-1.9.2-p136/bin/rake:19:in `<main>'

কেউ একই সমস্যা অভিজ্ঞ? কী ভুল হতে পারে? নোট করুন যে আমি চালাচ্ছি Rails 3.0.3, আপনি আমার জেমফিলের বিষয়বস্তুতেও আগ্রহী হতে পারেন:

source 'http://rubygems.org'
gem 'rails', '3.0.3'
gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'mysql2'
gem 'legacy_data'
gem 'resources_controller', :git => 'git://github.com/ianwhite/resources_controller'
gem 'will_paginate', '3.0.pre' # pagination
gem 'jquery-rails', '>= 0.2.6'
gem "rmagick" # sudo aptitude install libmagick9-dev
gem "paperclip", "~> 2.3"
gem "nested_form", :git => "git://github.com/madebydna/nested_form.git"
gem "meta_search"
gem "hirb"
gem "devise"
gem "rails_admin", :git => "git://github.com/sferik/rails_admin.git"

আমি কিভাবে এই সমস্যা ঠিক করতে পারবো?


7
আমি মনে করি সমস্যাটি রেক -০.০.৯ (প্রকাশিত) এর সাথেও রয়েছে।
কেদার মহাশ্বেদে

4
আপনি রেক বলতে চান, সংস্করণ 0.9.0। তবে, হ্যাঁ, এটি ভেঙে গেছে।
রব

সুতরাং আমি যা করছি তার সাথে সমস্যা বা রাকের এই বিশেষ সংস্করণে কোনও সমস্যা? ধন্যবাদ, এন
ifightcrime

শুধু এই বিষয়টি জুড়ে এসেছিল, এটি বের করার চেষ্টা করে
মুহাম্মদ উসমান

উত্তর:


119

রাকের 0.9.0.beta.4 সংস্করণটি চালানোর সময় আমার একই ব্যতিক্রম ছিল। দেখে মনে হচ্ছে Rake::DSLনতুনটি সঠিকভাবে লোড হয়নি।

সুতরাং আমি আমার রেকফাইলে নিম্নলিখিত কোডগুলি যুক্ত করেছি:

require 'rake'

# Rake Fix Code start
# NOTE: change 'Anelis' to your app's module name (see config/application.rb)
module ::Anelis
  class Application
    include Rake::DSL
  end
end

module ::RakeFileUtils
  extend Rake::FileUtilsExt
end
# Rake Fix Code end

MyApp::Application.load_tasks

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

আমি জানি যে এটি একটি মার্জিত সমাধান নয়। তবে যদি আপনাকে --preরকের সংস্করণ ব্যবহার করতে হয় তবে এই দ্রুত হ্যাকটি ব্যবহার করা ঠিক হবে।


টিপটির জন্য মুর্দারসো ধন্যবাদ!
আমোক্রেন চেন্তির

14
আপনার রেল অ্যাপ্লিকেশনটির নামের সাথে মেলে যাই হোক না কেন আপনি "মডিউল :: অ্যানেলিস" লাইনটি পরিবর্তন করেছেন তা নিশ্চিত করুন .. আইই "মডিউল :: মায়াপ" আমি এটি করতে ভুলে গিয়েছি এবং আমি আমার ভুল বুঝতে না পারলে এই সমাধান কার্যকর হয়নি।
স্কট সুইজে

1
টিপসটির জন্য মুর্দারসো ধন্যবাদ। আপনার অ্যাপ্লিকেশন নামে অ্যানেলিস পরিবর্তন করুন এবং আপনার অ্যাপ্লিকেশন নামক :: অ্যাপ্লিকেশন.লোড_টাস্ক লাইনের আগে সেই যাদু কোডটি যুক্ত করুন অন্যথায় ত্রুটি এখনও ঘটে
জিয়াং

10
এবং নিশ্চিত হয়ে নিন যে আপনি এটিকে require 'rake'এবংMyApp::Application.load_tasks
জিটস

দেখে মনে হচ্ছে এটি 0.9.0 সম্পূর্ণ প্রকাশে অব্যাহত রয়েছে। এটি রেল এবং / অথবা রেকের মধ্যে স্থির না হওয়া পর্যন্ত আমি আমার জেমফিল.লোকটিতে 0.8.7 এ ফিরে এসেছি। আন্দ্রেয়ের নীচের উত্তরটি এটির মতো বলে মনে হচ্ছে।
sj26

158

মর্ডারসোর উত্তরে যেমনটি ব্যাখ্যা করা হয়েছে , রেক ০.৯.০-এ একটি সমস্যা আছে। রেক এড়ানোর জন্য আপনাকে সাময়িকভাবে ডাউনগ্রেড করতে হবে:

  1. চালান: gem uninstall rake -v 0.9( sudoআপনি ব্যবহার না করা যোগ করুন rvm)

  2. আপনার রত্নটি যোগ করুন: gem 'rake', '~> 0.8.7'

  3. এবং তারপরে চালান: bundle update

আপনিই প্রথম পদক্ষেপটি এড়িয়ে যেতে পারেন, কিন্তু তারপর আপনি চালানোর আছে rakeব্যবহার bundle exec, উদাহরণস্বরূপ:

bundle exec rake db:migrate

অন্যথায় আপনি নিম্নলিখিত ত্রুটি পান।

rake aborted!
You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.

হালনাগাদ

অ্যালেক্স চ্যাফি যেমন পাবলো ক্যানটারোর উত্তরের জন্য একটি মন্তব্যে লক্ষ্য করেছেন , আপনি যদি এখনও সমস্যাটি দেখতে পান তবে রেকে আনইনস্টল করার জন্য আপনাকে নিম্নলিখিতগুলি করতে হবে might

rvm use @global && gem uninstall rake -v 0.9.0
rvm use @       && gem uninstall rake -v 0.9.0

ডিউকের উত্তরে প্রস্তাবিত সমাধানটিও চেষ্টা করে দেখুন ।


2
আমি মনে করি এটি সর্বনিম্ন "হ্যাকি" সমাধান। bundle exec rakeওয়ার্কিং বান্ডিল সংস্করণটি ব্যবহার করার জন্য আপনাকে রাক চালানোর প্রয়োজন হতে পারে ।
স্টুয়ার্ট কে

2
@ স্টুয়ার্ট কে, bundle exec rakeকেবল তখনই প্রয়োজন , যদি রেক -০.৯ আনইনস্টল না করা হয়। rake aborted! You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7. Consider using bundle exec.
আন্ড্রেই

1
এই ইস্যুটি রেল 3.0.০..7 এর সাথেও রয়েছে, রেলটিসের রত্নটি রেক> = 0.8.7 এর সাথে রয়েছে যা 0.9 এ উপলব্ধ হিসাবে এটি টানছে ...
ম্যাথু সেভেজ

3
আরও কম হ্যাকি ব্যবহার করা হচ্ছে:gem 'rake', '~> 0.8.7'
ফ্যাবিও

"আপনার জেমফাইলে যুক্ত করুন" দ্বারা, আপনি ঠিক কী বোঝাতে চাইছেন? এই রত্নটি কোথায়? দুঃখিত, n00b প্রশ্ন
আদনান

40

দ্রষ্টব্য: এটি সবেমাত্র 3.0 .8.৮.৮ এ স্থির করা হয়েছিল

রকের নতুন সংস্করণটি তার ডিএসএল কমান্ডগুলি (টাস্ক, ফাইল, ডেস্ক, আমদানি ইত্যাদি) আর অবজেক্ট নেমস্পেসের মূলের মধ্যে রাখে না (সেগুলিকে অবজেক্টে রাখার অর্থ প্রতিটি বস্তুর একটি টাস্ক কমান্ড রয়েছে, খুব সুন্দর নয় The ডিএসএল কমান্ডগুলির Rake::DSL moduleপ্রয়োজন অনুসারে যে কোনও মডিউলে মেশানোর মাধ্যমে কমান্ডগুলি উপলব্ধ।

রেল অন রুবেলকে রেক 0.9.x এর সাথে কাজ করার আপডেট হওয়া অবধি, "রেকের প্রয়োজন" পরে এবং কল করার আগে আপনার প্রকল্পটি রেকফাইলে নীচে রাখুন Application.load_tasks:

class Rails::Application
  include Rake::DSL if defined?(Rake::DSL)
end

আমি রেল .7.০..7 ব্যবহার করছি, রেকটি ০.৯.০ এ আপডেট হয়েছে তবে জেমফাইলে ডিফল্টরূপে এটি 0.8.7 রয়েছে তাই আমরা যদি 0.9.0 এ আপডেট করি তবে এটি সূক্ষ্ম থান ডিউকে কাজ করে
জগদীশ বড়বাড়ি

16

এই একই ত্রুটিটি সম্পর্কে আমি রেল_ডমিনের জন্য একটি সমস্যা তৈরি করেছি।

উত্তর :

এটি একটি সাধারণ রেলের সমস্যা: http://twitter.com/dhh/status/71966528744071169

শীঘ্রই একটি 3.0.8 রিলিজ হওয়া উচিত যা এটি ঠিক করে দেয়। মাঝামাঝি সময়ে, আপনি নীচের লাইনটি আপনার জেমফাইলে যুক্ত করতে পারেন:

রত্ন 'রাক', '~> 0.8.7'

এটি রেকের সমস্যা (0.9.0), এটি ডিএইচএইচ টুইটারে ঘোষণা করেছিল।

গতকাল প্রকাশিত রেক 0.9, রেলগুলি (এবং অন্যান্যদের) ভেঙে দিয়েছে। আমরা যখন ঠিক করার জন্য অপেক্ষা করি, আপনি আপনার রত্নখণ্ডিতে রত্ন 'রাক', '0.8.7' চাইবেন।


2
এটি পর্যাপ্ত হতে পারে না, যদি আপনার প্যাথএলটিতে এখনও 0.9.0 এর / বিন ডিরেক্টরি রয়েছে। সত্যিই রেক আনইনস্টল করতে, আপনাকে করতে হবে gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7(দ্বিতীয় ইনস্টলটি এক্সিকিউটেবল ফিরিয়ে আনতে হবে)।
অ্যালেক্স চ্যাফি

1
এবং যদি রেক 0.9.0 আপনার আরভিএম গ্লোবাল জেমসেটটি ইন্সটো পেয়ে যায়, আপনাকে করতে হবেrvm use @global && gem uninstall rake --version 0.9.0 && rvm use @ && gem uninstall rake --version 0.9.0 && gem install rake --version 0.8.7
অ্যালেক্সচফি



2

আমি আরভিএম ব্যবহার করি, তবে আনইনস্টল করা আমাকে সাহায্য করে না। সুতরাং আমি ম্যানুয়ালি সমস্ত 0.9 ফাইল .rvm/gems/ruby@globalডিরেক্টরি থেকে মুছে ফেললাম এবং সবকিছু আগের মত হয়ে গেল!


0

Rake 0.9.x আনইনস্টল করার প্রয়োজন ছাড়াই যুক্ত করুন

রত্ন 'রাক', '~> 0.8.7'

আপনার জেমফাইলে এবং টাইপ করুন

বান্ডেল এক্সেক রেক-টি


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