rake
タスクを実行すると、次の結果が得られます。
NoMethodError:undefined method `last_comment 'for
これは、rakeの新しいバージョンである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:#<Rake :: Application:0x007ff0cf37be38>の未定義メソッド `last_comment '
バージョン
Rake 11.0.1 削除last_comment
メソッド Rails 2.3 rspec-core(<3.4.4)が使用します。したがって、パッチがリリースされるまでは、Gemfileでrakeを古いバージョンに固定する必要があります。
gem 'rake', '< 11.0'
その後:
$ bundle update
$ grep rake Gemfile.lock
rake
rake (>= 0.8.7)
rake (10.5.0)
rake
rake (< 11.0)
現在、last_comment
メソッドを保持するrake 10.5.0を使用しており、rake
タスクが再び機能します。
UPDATE:これはrspecで修正されたため、必要なのはrspecの更新のみです。
Railsのクイック修正は./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
最新のRspec
gemに更新すると動作します。
bundle update rspec-Rails
Gem rspec-Rails
をアップグレードするだけです
現在:gem 'rspec-Rails', '~> 3.5', '>= 3.5.2'
抱擁!
これは rakeの問題 であり、すでに対処されています。
@ equivalent8による答えは猿のパッチであり、避けるべきです。
@Krisが指摘しているように、これはrake 11.0.1
に孤立した問題です。 @Krisが答えを投稿してから、Rakeの新しいバージョンが利用可能になりました。理想的には、古いバージョンのrakeに固定されることなく、時代にとどまることができます。私を信じて、私はそこにいましたが、あなたがそれを助けることができるなら、それは良い考えではありません。また、これはRails 2.3またはRailsのどのバージョンでも問題ではありません。
Rake < v11.0.1
または> v11.0.1 and < v12
は動作しますが、これは回避策であり、回避する必要があります。理想的には時代にとどまることができるでしょう。
last_comment
は非推奨になっているため、依存関係自体をアップグレードする必要があります。私の場合、偶然に v3.4.4 でこれを修正したのはrspec-core
でした。
修正
依存関係をlast_comment
を呼び出さないが、代わりにlast_description
を呼び出すバージョンにアップグレードします。おそらくrspec
であり、rspec-core
を3.4.4以降にアップグレードすると修正されます。 rspec-core
<3.4.4はlast_comment
を呼び出します。
依存関係にlast_description
を呼び出さないバージョンがない場合は、良き市民になり、それを修正するためにPRを送信してください:)