NoMethodError: 11 রকে আপগ্রেড করার পরে অপরিজ্ঞাত পদ্ধতি `গত_কমেন্ট


130

যে কোনও rakeকাজ চালানোর সময় আমি পাই:

NoMethodError: অপরিবর্তিত পদ্ধতি `গত_কমেন্ট '

এটির পরে bundle updateরেক, সংস্করণে নতুন সংস্করণ টানা হয়েছিল 11.0.1

$ grep rake Gemfile.lock
       rake
       rake (>= 0.8.7)
     rake (11.0.1)
       rake
$ bundle update
$ bundle exec rake db:drop # any rake task

NoMethodError: # <রেক :: অ্যাপ্লিকেশন: 0x007ff0cf37be38> এর জন্য অপরিজ্ঞাত পদ্ধতি `গত_কমেন্ট '

সংস্করণ

  • কারখানাগুলি 3.2.11
  • রেক 11.0.1

উত্তর:


159

মই দিয়া আহরণ করা 11.0.1 সরিয়ে ফেলাlast_comment পদ্ধতি যারেল ২.৩আরএসপেক-কোর (<3.4.4) ব্যবহার করে। অতএব / যদি কোনও প্যাচ প্রকাশ না হয় তবে আমাদের জেমফাইলে একটি পুরানো সংস্করণে রেক পিন করতে হবে:

gem 'rake', '< 11.0'

তারপর:

$ bundle update
$ grep rake Gemfile.lock 
      rake
      rake (>= 0.8.7)
    rake (10.5.0)
      rake
  rake (< 11.0)

আমরা এখন রেক 10.5.0 ব্যবহার করছি যা এখনও last_commentপদ্ধতি রয়েছে এবং আমাদের rakeকাজগুলি আবার কাজ করবে।

আপডেট : এটি এখন আরএসপেক-এ স্থির করা হয়েছে, সুতরাং কেবলমাত্র প্রয়োজনীয় জিনিসটি আরএসপিইকে আপডেট করা উচিত।


আমাকে এটি করার bundle execপরে ব্যবহার rakeকরতে হবে, বান্ডেল এক্সিকিউট ছাড়া কীভাবে এখনও ব্যবহার করবেন ??
svelandiag

আপনি কি আপনার "রেল ২.৩" মন্তব্যটি পরিষ্কার করতে পারেন? আমি কারাগারে আছি 4 এবং rake db:create:allএই ব্যতিক্রম ছোঁড়া।
ইয়েকটা

@ ইয়েকাটা রেলস ২.৩ প্রত্যাশা রেকে একটি পদ্ধতি বলেছে last_comment, যেখানে কোডবেসে এটি মনে নেই। আমি জানি না 4 রেলও কল করে কিনা last_comment। তবে আপনি রেল কোডবেস চেকআউট করতে পারবেন, রেল 4 শাখায় স্যুইচ করতে পারেন এবং "শেষ_কমেন্ট" এর জন্য Rakefileএবং গ্রেপ করতে পারেন *.task
ক্রিস

7
এই জন্য আপনাকে ধন্যবাদ, এখনো 2017. আমাদের বেকন সংরক্ষণ
নিক Schwaderer

2
@ আরএসএসপেক ৩.৫ বা তার চেয়ে বেশি
ক্রিস

73

কারাগারে দ্রুত ফিক্স সম্পাদনা করা যেতে পারে ./Rakefile(আপনার অ্যাপ ফোল্ডারে)

এবং কল করার আগে এই লাইনগুলি যুক্ত করুন Rails.application.load_tasks:

module TempFixForRakeLastComment
  def last_comment
    last_description
  end 
end
Rake::Application.send :include, TempFixForRakeLastComment

সুতরাং পুরো Rakefileমত চেহারা হতে পারে

  require File.expand_path('../config/application', __FILE__)
  require 'rake'
  require 'resque/tasks'

+ # temp fix for NoMethodError: undefined method `last_comment'
+ # remove when fixed in Rake 11.x
+ module TempFixForRakeLastComment
+   def last_comment
+     last_description
+   end 
+ end
+ Rake::Application.send :include, TempFixForRakeLastComment
+ ### end of temfix
+ 
  task "resque:preload" => :environment

  Rails.application.load_tasks

ধন্যবাদ। আর রেক 11.1.0 হিসাবে আর প্রয়োজন নেই
সেটথকল

10
সুন্দর, আমার 5 মিনিটের খ্যাতিটি এখানে যায়: ডি
সমমান 8

3
দেখে মনে হচ্ছে অপসারণটি last_comment আবার উল্টে গেছে এবং এখন পরিবর্তে 12.0 এ মুছে ফেলা হবে।
ক্রিস

3
12.0.0 রেকে আপগ্রেড করার পরে আমি এই ত্রুটিটি দেখতে শুরু করেছি। @ সমতুল্য 8 এর টেম্প ফিক্স আমার পক্ষে কাজ করেছে।
ব্ল্যাকউড

1
আরএসপেক-কোর -৩.৪ এ আপগ্রেড করা আমার জন্য এটি সমাধান করেছে এবং আমি এই উত্তরে বানরের প্যাচটি সরিয়ে ফেলতে সক্ষম হয়েছি।
নিওন্টাপির

27

সর্বশেষ Rspecরত্নটিতে আপডেট করা কাজ করে:

bundle update rspec-rails


7
স্ট্যাকওভারফ্লোতে আমার নিজের উত্তর সন্ধান করা - 3 বছর যেহেতু আমি এটি লিখেছি - এখনও যাদুটির মতো কাজ করে :)
গাল ব্রাচা

3
এটি "সর্বদা" একটি ভাল সমাধান নয়, এটি একটি নন সামঞ্জস্যপূর্ণ আরএসপেক-রেল সংস্করণ ইনস্টল করতে পারে, এটি সর্বদা ব্যবহারের জন্য ভেরিসন নির্দিষ্ট করা ভাল।
আর্নল্ড রোয়া

21

শুধু মণি আপগ্রেড করুন rspec-rails

এখন: gem 'rspec-rails', '~> 3.5', '>= 3.5.2'

ভালোবাসামাখা!


1
gem 'rspec-rails', '~> 3.6'আমার লাইভ বাঁচিয়েছে, অনেক ধন্যবাদ !! এবং আমি ভেবেছিলাম আমার কোডের ভিতরে আমার কাছে সর্বশেষ_কমেন্টের মতো কিছু আছে! LOL
ব্যবহারকারী 1735921

20

এটি রেকের একটি সমস্যা যা ইতিমধ্যে মোকাবেলা করা হয়েছে।

@ সমতুল্য 8 এর উত্তরটি একটি বানরের প্যাচ এবং এড়ানো উচিত।

@ ক্রিস যেমন উল্লেখ করেছেন, এটি বিচ্ছিন্ন একটি বিষয় rake 11.0.1। যেহেতু ক্রিস তার উত্তর পোস্ট করেছে সেখানে রকের নতুন সংস্করণ উপলব্ধ রয়েছে এবং আদর্শভাবে আপনি সময়টির সাথে থাকতে পারবেন এবং রকের পুরানো সংস্করণে পিন না হয়ে থাকতে পারেন। বিশ্বাস করুন, আমি সেখানে এসেছি এবং আপনি যদি এটি সহায়তা করতে পারেন তবে এটি ভাল ধারণা নয়। এছাড়াও এটি রেল ২.৩ বা রেলের কোনও সংস্করণ নিয়ে কোনও সমস্যা নয়।

যে কোনও রেক < v11.0.1বা > v11.0.1 and < v12কাজ করবে তবে এটি এখনও চারপাশের কাজ এবং এড়ানোও উচিত; আদর্শভাবে আপনি সময়ের সাথে থাকতে পারবেন

যেহেতু last_commentঅবহেলা করা হচ্ছে তখন নির্ভরতা নিজেই আপগ্রেড করা উচিত। আমার ক্ষেত্রে এটি ছিল rspec-coreযা ঘটনাক্রমে কেবলমাত্র v3.4.4 এ স্থির করেছিল

ঠিক করা

আপনার নির্ভরতা এমন সংস্করণে আপগ্রেড করুন যা কল করে না last_commentবরং কল last_descriptionকরে। এটি সম্ভবত rspecএবং rspec-core3.4.4 বা তার চেয়ে বেশি আপগ্রেড করা এটি ঠিক করবে। rspec-core<3.4.4 কল last_comment

যদি আপনার নির্ভরতার কোনও সংস্করণ না থাকে যা কল করে না last_description, তবে একটি ভাল নাগরিক হন এবং এটি ঠিক করার জন্য পিআর জমা দিন :)

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