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

#ruby-on-rails #rake #warnings #deprecated

#ruby-on-rails #грабли #предупреждения #устарело

Вопрос:

Я обновил пакет, теперь у меня все еще есть устаревшее предупреждение 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/ruby-1.8.7-p302@tobiska/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 в порядке.

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

Мартин

Комментарии:

1. Я все еще борюсь с этой проблемой в ряде проектов. Со всеми очевидными вещами, о которых позаботились (rdoc и т. Д.), Это все еще беспокоит меня. Я сильно подозреваю, что в проекте есть некоторые драгоценные камни.. но отслеживание проблемы является проблемой. Кто-нибудь знает, как заставить ruby / rake сообщать точное местоположение кода того, что вызвало ПРЕДУПРЕЖДЕНИЕ?

Ответ №1:

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

 $ gem list
=> rake
  

(0.9.2.2, 0.9.2, 0.8.7)
Чтобы определить версию в моем проекте, определите ее в файле Gemfile как

 gem 'rake', '0.8.7'
  

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

 bundle update rake
  

Теперь ваша версия проекта соответствует указанной в файле Gemfile, и ваше ПРЕДУПРЕЖДЕНИЕ исчезло.

Комментарии:

1. У меня нет нескольких версий rake.

Ответ №2:

В дополнение к изменению Gemfile и запуску ‘bundle update 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
  

ОБНОВЛЕНИЕ: это все еще беспокоило меня в проекте rails 3.0.x. Rakefile, gems все выглядело нормально, но я все еще получал проблему. Чтобы точно узнать, откуда пришло предупреждение, я поместил канарейку в gems/rake-0.9.2.2/lib/rake/rdoctask.rb:

 if Rake.application
  begin
    raise 'where am i'                                                                
  rescue                                                                       
    puts $@                                                                    
  end 
  Rake.application.deprecate('require 'rake/rdoctask'', 'require 'rdoc/task' (in RDoc 2.4.2 )', __FILE__)
end
  

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

Но пока вы застряли на ~ 3.0.8 и не хотите понижать рейтинг rake, вы можете подавить предупреждение, установив 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, которые вызывают rake, не регистрируют и не отправляют ложные выходные данные по электронной почте.

Комментарии:

1. да, это тоже вернулось ко мне. Трюк с rdoc устраняет одну причину, но есть и другие…

2. хорошо, теперь я счастлив: есть решение, которое работает. (соответствующим образом обновляю свой ответ)