我还有rake / rdoctask弃用的警告

时间:2011-11-03 10:13:58

标签: ruby-on-rails rake warnings deprecated

我已经进行了捆绑更新了,现在我在运行rake命令后仍然使用了rake / rdoctask弃用警告。

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没问题。

我不知道,如何解决这个问题。有小费吗?非常感谢。

马丁

3 个答案:

答案 0 :(得分:19)

您的系统上可以有多个版本的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 :(得分:4)

除了更改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

答案 2 :(得分: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 / 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时,你可以通过在你的Rakefile中设置ignore_deprecate来抑制警告:

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

为什么要压制警告?我的主要动机是确保调用rake的cron作业不会记录和发送虚假输出。