1

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

(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 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'

仍然,同样的错误。

4

5 回答 5

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)到捆绑安装

因此,在我的 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 新手,并且继承了旧的 Rails 应用程序,那么看在上帝的份上,永远不要运行“捆绑更新”,否则您将进入一个痛苦的世界。该命令将您的所有 gem 更新到最新版本,最终您会遇到大量不兼容的问题。唯一的出路是如果你有幸安装了 git 并且可以执行“git checkout”返回...

于 2013-08-22T11:41:45.340 回答
4

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

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

希望它可以帮助一些人!

于 2013-05-07T07:22:32.083 回答
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% 肯定地告诉你这是原因,但我们是两个人,在同一个分支上工作并看到相同的错误。该修复对我们俩都有效。简单地

指定导轨版本!

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

然后捆绑,运行 rails -v,傻笑(或哭泣)并重新开始制作

于 2013-10-22T15:03:02.173 回答
0

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

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

require 'rdoc'
require 'rdoc/task'

代替

require 'rake/testtask'
require 'rake/rdoctask'
于 2013-03-29T13:50:14.770 回答
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
于 2013-11-07T21:51:20.570 回答