NoMethodError: रेक 11 पर अपग्रेड करने के बाद अपरिभाषित विधि 'last_comment' - रूबी-ऑन-रेल, रूबी-ऑन-रेल -3, रेक

किसी भी दौड़ते समय rake कार्य मुझे मिलता है:

NoMethodError: के लिए अपरिभाषित विधि 'last_comment "

यह बाद में था 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> के लिए अपरिभाषित विधि `last_comment"

संस्करण

  • रेल 3.2.11
  • रेक 11.0.1

उत्तर:

उत्तर № 1 के लिए 118

रेक 11.0.1 हटा देगा the last_comment विधि जो रेल २.३ rspec-कोर (< 3.4.4) का उपयोग करता है । इसलिए जब तक/यदि एक पैच जारी हम Gemfile में एक पुराने संस्करण के लिए रेक पिन की जरूरत है:

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 कार्य पुन: कार्य करेंगे ।

अद्यतन करें: यह अब rspec में तय किया गया है, तो केवल आवश्यक बात rspec अद्यतन किया जाना चाहिए ।


उत्तर № 2 के लिए 64

रेल में जल्दी ठीक हो सकता है एडिट ./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

20 उत्तर के लिए № 3

यह एक घूस में मुद्दा जिसे पहले ही संबोधित किया जा चुका है ।

@equivalent8 द्वारा उत्तर एक बंदर पैच है और बचा जाना चाहिए ।

के रूप में @Kris बताते हैं, यह एक अलग मुद्दा है rake 11.0.1. के बाद से @Kris अपने जवाब वहां उपलब्ध रेक के नए संस्करण है और आदर्श तुम समय के साथ रहने के लिए और घूस के एक पुराने संस्करण पर टिकी नहीं कर सकेंगे पोस्ट किया है ।मेरा विश्वास करो, मैं "ve वहां गया है और इसकी नहीं एक अच्छा विचार है अगर आप इसे मदद कर सकते हैं ।इसके अलावा इस रेल २.३ या रेल के किसी भी संस्करण के साथ एक मुद्दा नहीं है ।

किसी भी रेक < v11.0.1 या > v11.0.1 and < v12 काम करेंगे लेकिन यह अभी भी एक काम के आसपास है और भी बचा जाना चाहिए; आदर्श रूप में आप ' ll समय के साथ रहने के लिए सक्षम हो ।

जबसे last_comment पदावनत किया जा रहा है निर्भरता स्वयं नवीनीकृत किया जाना चाहिए । मेरे मामले में यह था rspec-core जो संयोग से ही इस में तय वी 3.4.4

को ठीक

एक संस्करण है जो doesn "टी कॉल करने के लिए अपनी निर्भरता अपग्रेड last_comment लेकिन कॉल last_description बजाय. इसकी शायद rspec और उंनयन rspec-core करने के लिए 3.4.4 या अधिक इसे ठीक करेंगे । rspec-core < 3.4.4 कॉल last_comment

यदि आपकी निर्भरता doesn "t एक संस्करण है जो doesn" टी कॉल last_description, एक अच्छा नागरिक हो और इसे ठीक करने के लिए एक पीआर प्रस्तुत:)


18 उत्तर № 4 के लिए

अद्यतन करने के लिए नवीनतम Rspec मणि काम करता है:

bundle update rspec-rails


15 के लिए उत्तर № 5

बस मणि उंनयन rspec-rails

अभी व: gem "rspec-rails", "~> 3.5", ">= 3.5.2"

Hugs!


संबंधित सवाल
सबसे लोकप्रिय