어떤 rake
작업을 실행할 때 다음을 얻습니다.
NoMethodError : 정의되지 않은 메소드 ‘last_comment’
그 후에 bundle update
새 버전의 레이크 버전 version을 끌어 들였습니다 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’
버전
- 레일 3.2.11
- 레이크 11.0.1
답변
레이크 11.0.1 제거last_comment
방법 어느레일 2.3rspec-core (<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)
우리는 지금 last_comment
방법을 가지고 있으며 rake
작업이 다시 작동 하는 레이크 10.5.0을 사용 하고 있습니다.
업데이트 : 이것은 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
보석으로 업데이트 하면 작동합니다.
bundle update rspec-rails
답변
그냥 보석을 업그레이드하십시오 rspec-rails
지금: gem 'rspec-rails', '~> 3.5', '>= 3.5.2'
안아!
답변
이것은 이미 해결 된 레이크 문제입니다 .
@ equivalent8의 답변은 원숭이 패치이며 피해야합니다.
@Kris가 지적했듯이 이것은에 격리 된 문제입니다 rake 11.0.1
. @Kris가 그의 답변을 게시 한 이후, 새로운 버전의 Rake를 사용할 수 있으며 이상적으로는 시간을 유지하면서 이전 버전의 레이크에 고정되지 않을 수 있습니다. 나를 믿어, 나는 거기에 있었고 당신이 도울 수 있다면 좋은 생각이 아닙니다. 또한 이것은 Rails 2.3 또는 모든 버전의 레일에서는 문제가되지 않습니다.
모든 레이크 < v11.0.1
또는 > v11.0.1 and < v12
작동하지만 여전히 해결 방법이므로 피해야합니다. 이상적으로 당신은 시간과 함께 머물 수 있습니다.
때문에 last_comment
의존성을 사용 중지되고 자체가 업그레이드해야합니다. 제 경우에는 rspec-core
우연히 v3.4.4 에서만 이것을 고쳤습니다 .
수정
호출하지 않는 버전으로 종속성을 업그레이드 last_comment
하지만 호출 last_description
대신. 아마도 3.4.4 이상으로 rspec
업그레이드 rspec-core
하면 문제가 해결됩니다. rspec-core
<3.4.4 통화 last_comment
.
당신의 의존성에 호출하지 않는 버전이 last_description
없다면, 좋은 시민이되고 그것을 고치기 위해 PR을 제출하십시오 🙂