Подтвердить что ты не робот

У меня есть еще rake/rdoctask устаревшее предупреждение

Я обновил пакет обновления, но теперь я все еще предупреждаю об ошибке rake/rdoctask после запуска команды rake.

WARNING: 'require 'rake/rdoctask'' is deprecated.  Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
    at /home/cheetah/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/rdoctask.rb

Я попытался прочитать этот совет http://matthew.mceachen.us/blog/howto-fix-rake-rdoctask-is-deprecated-use-rdoc-task-instead-1169.html, но мой Rakefile в порядке.

Я понятия не имею, как решить эту проблему. Какие-нибудь советы? Большое спасибо.

Martin

4b9b3361

Ответ 1

У вас может быть несколько версий рейка в вашей системе, и вы можете просмотреть их, запустив

$ gem list
=> rake

(0,9,2,2, 0,9,2, 0,8,7) Чтобы определить версию в моем проекте, определите ее в Gemfile как

gem 'rake', '0.8.7'

затем запустите

bundle update rake

Ваша версия проекта теперь указана в Gemfile, и ваше WARNING теперь исчезло.

Ответ 2

В дополнение к изменению Gemfile и запуску "rake-обновления пакета" также нужно запустить для меня:

gem uninstall rake -v 0.9.2.2
gem uninstall rake -v 0.9.2
gem install rake -v 0.8.7

Ответ 3

В некоторых проектах, которые не вызывают весь стек rails, добавление rdoc в Gemfile было ключом к успеху для меня:

group :development, :test do
  gem 'rake', '~> 0.9.2.2'
  gem "rdoc", '~> 3.12'
end

UPDATE: Это все еще подтачивало меня проектом rails 3.0.x. Rakefile, драгоценные камни выглядели нормально, но я все еще сталкивался с проблемой. Чтобы узнать, где именно происходит предупреждение, я поставил канарейку в gems/rake-0.9.2.2/lib/rake/rdoctask.rb:

if Rake.application
  begin
    raise 'where am i'                                                                
  rescue                                                                       
    puts [email protected]                                                                    
  end 
  Rake.application.deprecate('require \'rake/rdoctask\'', 'require \'rdoc/task\' (in RDoc 2.4.2+)', __FILE__)
end

Это сразу же указывало на проблему в самом стеке rails. Быстрая проверка, и очевидно, что рельсы 3.0.8 полны требований к rake/rdoctask. Обновление для рельсов (3.0.9 или выше, я считаю) исправляет проблему (или вы можете понизить рейк, как предложили другие).

Но пока вы застряли на ~ 3.0.8 и не хотите понижать уровень рейка, вы можете подавить предупреждение, установив ignore_deprecate в свой Rakefile:

require File.expand_path('../config/application', __FILE__)
require 'rake'
require 'rake/testtask'
require 'rdoc/task'

# add this (and perhaps make it conditional on Rails.version if you like):
Rake.application.options.ignore_deprecate = true

Babylon::Application.load_tasks

Зачем подавлять предупреждение? Моя основная мотивация заключалась в том, чтобы гарантировать, что задания cron, которые вызывают рейк, не регистрируют и не высылают ложные сообщения.