在一些不需要调用整个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中设置了一个canary:
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'
Rake.application.options.ignore_deprecate = true
Babylon::Application.load_tasks
为什么要抑制警告?我的主要动机是确保调用rake的cron作业不记录和发送虚假输出。