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

Eas*_*per 1 rake ruby-on-rails rdoc mysql2

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

(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)>'
Run Code Online (Sandbox Code Playgroud)

当我做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)
Run Code Online (Sandbox Code Playgroud)

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

仍然,同样的错误.

Vid*_*ida 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)>'
Run Code Online (Sandbox Code Playgroud)

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

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

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

gem 'rake', '0.9.2'
Run Code Online (Sandbox Code Playgroud)

然后做了一个

'bundle install'
Run Code Online (Sandbox Code Playgroud)

得到这条消息:

You have requested:
  rake = 0.9.2

The bundle currently has rake locked at 10.1.0.
Try running `bundle update rake`
Run Code Online (Sandbox Code Playgroud)

所以我这样做了......

bundle update rake.
Run Code Online (Sandbox Code Playgroud)

那很好.

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

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

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