错误:’rake / rdoctask’已过时且不再受支持

出乎意料的是,我开始收到以下错误消息:

(in /Users/me/.rvm/gems/ruby-1.9.3-p125@mysql2/gems/rails-0.9.5) rake aborted! ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead. /Users/me/.rvm/gems/ruby-1.9.3-p125@mysql2/gems/rails-0.9.5/Rakefile:3:in `' 

当我做rails s(在我的开发环境终端–Mac Mountain Lion)。 这个应用程序正在生产中,所以我去了生产环境,做了一个捆绑显示,并修改了我的Gemfile,以对这些gems版本进行编码。

这就是我现在在我的本地开发环境中所产生的内容(产生错误消息的原因)。

 actionmailer (3.2.3) actionpack (3.2.3) activemodel (3.2.3) activerecord (3.2.3) activeresource (3.2.3) activesupport (3.2.3) annotate (2.4.1.beta1) arel (3.0.2) bcrypt-ruby (3.0.1) bootstrap-datepicker-rails (0.6.15) bootstrap-sass (2.0.2) builder (3.0.4) bundler (1.1.3) coffee-rails (3.2.2) coffee-script (2.2.0) coffee-script-source (1.6.1) commonjs (0.2.6) devise (2.0.4) diff-lcs (1.1.3) erubis (2.7.0) execjs (1.4.0) factory_girl (3.2.0) factory_girl_rails (3.2.0) hike (1.2.1) i18n (0.6.4) journey (1.0.4) jquery-rails (2.0.2) json (1.7.1) less (2.2.2) less-rails (2.2.6) libv8 (3.3.10.4) mail (2.4.4) mime-types (1.21) multi_json (1.6.1) mysql2 (0.3.11) nokogiri (1.5.6) orm_adapter (0.0.7) polyglot (0.3.3) rack (1.4.5) rack-cache (1.2) rack-ssl (1.3.3) rack-test (0.6.2) rails (3.2.3) railties (3.2.3) rake (10.0.3) rdoc (3.4) rest-client (1.6.7) rspec (2.6.0) rspec-core (2.6.4) rspec-expectations (2.6.0) rspec-mocks (2.6.0) rspec-rails (2.6.1) sass (3.2.7) sass-rails (3.2.5) sprockets (2.1.3) stripe (1.7.0) therubyracer (0.10.1) thor (0.14.6) tilt (1.3.5) tinymce-rails (3.4.8) treetop (1.4.12) twitter-bootstrap-rails (2.1.0) tzinfo (0.3.37) uglifier (1.2.4) warden (1.1.1) webrat (0.7.1) 

我研究了Stackoverflow和网络,没有一个建议有效(将rake gem版本更改为不同的版本。如0.8.7等,编辑我的应用程序Rakefile以抑制弃用错误等)。 我还添加了rdoc,在我的Rakefile中,我需要’rdoc / task’

不过,同样的错误。

只是为了帮助那些有这种麻烦的人。 如果你像我一样,那你的问题是当前版本的rails是4,你想要使用像3.0.7这样的旧版本

如果你安装rails来学习它,比如说,你正在使用的教程是针对3.0.x版本的rails,或者你的工作需要使用旧版本的rails ..那么你可以进入这个洞。

在我的情况下,我有一个3.0.7 rails项目倾倒在我身上,并被告知学习rails并对此代码进行一些增强。

所以,我刚开始学习rails并且正在学习这个教程,直到我在做一个’rake db:migrate’时遇到这个错误

 rake aborted! ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead. /Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require' /Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `' /Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load' /Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in ' 

发生这种情况,因为我使用的是旧版本的rails ..在我的情况下3.0.7如果你运行’捆绑展示’,就像我那样做,你可能会看到你使用的是rake版本10.0.0或类似的东西……你需要运行rake 0.9.2 ……这就是问题所在……

我的解决方案是(a)将gem添加到我的gemfile中,(b)添加到bundle安装

所以,在我的gemfile中我添加了:

 gem 'rake', '0.9.2' 

然后做了一个

 'bundle install' 

得到这条消息:

 You have requested: rake = 0.9.2 The bundle currently has rake locked at 10.1.0. Try running `bundle update rake` 

所以我这样做了……

 bundle update rake. 

那很好。

然后,当我做’rake db:migrate’时,它才起作用。

希望这有助于某人。 维达。

PS:如果你是像我这样的新手,并且你inheritance了一个旧的rails应用程序,那么为了上帝的缘故,永远不要运行’捆绑更新’,否则你将进入一个痛苦的世界。 该命令会将您的所有gem更新为最新版本,最终会出现大量不兼容问题。 唯一的出路就是如果你有幸安装了git并且可以做一个’git checkout’回去……

当我尝试通过命令rake gems:install安装gems时遇到了同样的问题rake gems:install我的rails版本是rails2.3.2并且我安装了rvm。 我的gem清单是,

 actionmailer (2.3.2) actionpack (2.3.2) activerecord (2.3.2) activeresource (2.3.2) activesupport (2.3.2) bundler (1.3.5) rails (2.3.2) rake (10.0.4) rubygems-bundler (1.1.1) rvm (1.11.3.7) 

所以通过命令卸载了rake

rvm use ruby-1.8.7-p371@global && gem uninstall rake -v 10.0.4

然后我安装了旧版本的rake

rvm use ruby-1.8.7-p371@global && gem install rake -v 0.8.7

现在rake gems:install工作正常

希望它可以帮助一些人!

升级到rails 4.0.0我得到了同样的错误。

 rails -v (in /Users/oma/.rvm/gems/ruby-2.0.0-p247/gems/rails-0.9.5) rake aborted! ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead. /Users/oma/.rvm/gems/ruby-2.0.0-p247/gems/rails-0.9.5/Rakefile:3:in `' (See full trace by running task with --trace) 

要升级,我删除了Gemfile中的版本号

  source 'https://rubygems.org' gem 'rails' # NO VERSION 

并且做了bundle update因为我认为这将选择最后一个。 但不知何故,我得到了rails 0.9.5 。 感觉就像是一些恶作剧,真的,哈哈

 $ gem list rails rails (4.0.1.rc2, 4.0.0, 0.9.5) 

我不能100%确定这是原因,但我们是两个人,在同一个分支上工作并看到同样的错误。 这个解决方案适用于我们两个人。 只是

指定rails版本!

 $gem uninstall rails -v 0.9.5 Gemfile source 'https://rubygems.org' gem 'rails', '4.0.0' 

然后捆绑,运行rails -v,giggle(或cry)并返回生产

看看StackOverflow上的类似问题解决方案

另一种选择是使用(例子取自Redmine Rakefile)

 require 'rdoc' require 'rdoc/task' 

代替

 require 'rake/testtask' require 'rake/rdoctask' 

以下适用于我使用ruby 1.9.3p448(2013-06-27修订版41675):

1)使用rake版本10.1.0(在Gemfile中添加以下内容):

 gem 'rake', '10.1.0' 

(请注意,您可能会使用其他版本,但下面的行号可能会更改。)

2)注释你的Rakefile的第54行并将其替换如下:

 #require 'rake/rdoctask' gem 'rdoc', ">= 2.4.2" require 'rdoc/task' 

3)测试

 $ bundle install $ bundle exec rake