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

时间:2013-03-12 23:27:43

标签: ruby-on-rails rake mysql2 rdoc

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

(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 `<top (required)>'

当我做rails时(在我的开发环境终端--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'

仍然是同样的错误。

5 个答案:

答案 0 :(得分:6)

只是为了帮助那些有这种麻烦的人。 如果你像我一样,那你的问题是当前版本的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 `<top (required)>'
/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 <top (required)>'

这发生了,因为我使用的是较旧版本的rails ..在我的情况下为3.0.7 如果你像我那样运行'捆绑展示',你可能会看到你正在使用rake版本10.0.0或类似的东西......你需要运行rake 0.9.2 ...这是哪里问题来自......

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

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

答案 1 :(得分:4)

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

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工作正常

希望它对某个人有帮助!

答案 2 :(得分:1)

升级到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 `<top (required)>'
(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)并返回生成

答案 3 :(得分:0)

查看similar problem solution on StackOverflow

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

require 'rdoc'
require 'rdoc/task'

而不是

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

答案 4 :(得分:0)

以下适用于我使用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