У меня есть еще 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
Ответы
Ответ 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, которые вызывают рейк, не регистрируют и не высылают ложные сообщения.