Rails:如何解决“rake / rdoctask已弃用”的警告?

6

提前声明:我是Rails新手。

当我运行:

rake db:migrate

我收到了这个废弃警告:

WARNING: 'require 'rake/rdoctask'' is deprecated.  Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
    at /Users/username/Code/rails/appname/rake/ruby/1.9.1/gems/rake-0.9.2.2/lib/rake/rdoctask.rb

我正在使用:

  • Rails 3.0.1
  • Rake 0.9.2.2
  • RSpec 2.0.1
  • RDoc 3.12

如果我卸载rake 0.9.2.2并使用0.8.7,就不会出现警告,但我不想将其视为解决方案。

经过谷歌搜索,许多网站都说我需要更新Rakefile中的一行代码(基本上是将 require ‘rake/rdoctask’ 改为 require ‘rdoc/task’)。 然而,我的Rakefile看起来像这样:

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

AppName::Application.load_tasks

没有需要替换的require语句。当我添加require 'rdoc/task'时,它没有任何效果。当我在项目中搜索不推荐使用的'rake/rdoctask'时,没有结果。那么为什么Rails会抱怨呢?

编辑:不确定是否有影响,但这是我的gemfile:

source 'http://rubygems.org'

gem 'rails', '3.0.1'
gem 'sqlite3-ruby', :require => 'sqlite3'

group :development, :test do
   gem 'rspec-rails', '2.0.1'
   gem 'annotate-models', '1.0.4'
end

group :test do
   gem 'rspec', '2.0.1'
   gem 'webrat', '0.7.1'
   gem 'spork', '0.8.4'
end

请尝试执行 bundle exec rake db:migrate - clyfe
bundle exec rake db:migrate 给我同样的警告。 - user2393462435
这个警告通常跟一个无法加载或打包不正确的GEM有关。你的迁移中是否有任何require语句,或者你能否发布你的Gemfile?更新:抱歉,昨晚太晚了...刚看到你在原帖中的require语句。 - ScottJShea
2个回答

7

请注意,这个问题已经在较新版本的Rails 3.0.x中修复了(例如,Rails 3.0.9)。

修复不在顶层Rakefile中,而是在错误提到的文件中;这只是一个通用的通知:

if Rake.application
  Rake.application.deprecate('require \'rake/rdoctask\'', 'require \'rdoc/task\' (in RDoc 2.4.2+)', __FILE__)
end

实际上这与其他事情有关,详情请参见此链接


你把它放在哪里了?在 Rakefile 里吗? - Marc
@Marc 我没有把它放在任何地方;那是打印警告的那一行 :) - Dave Newton
哦,抱歉。我误解了这篇文章。谢谢! - Marc

2
这是我的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

myapp::Application.load_tasks

这是用于错误通知的工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接