35

似乎这个问题的最后一个帖子由于某种原因被关闭了,所以我会试试我的运气......

我正在尝试运行一个简单的“rake db:migrate”命令。当我这样做时,我得到标题中的错误。是的,解决方案“看起来”很明显,但这不是因为我不知道我的 Rakefile 不包含对“rake/rdoctask”的任何引用。它似乎来自documentation.rake,但是当我尝试按照错误的建议更改该文件时,我得到了一个不同的错误。我发现一些帖子声明这是一个已知问题,但我发现没有任何内容表明如何修复或解决此问题。

有谁知道如何解决它?下面是带有 --trace 的 rake 命令的输出:

$ rake --trace db:migrate
rake aborted!
ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/rdoctask.rb:1:in `<top (required)>'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks/documentation.rake:2:in `require'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks/documentation.rake:2:in `<top (required)>'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks.rb:15:in `load'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks.rb:15:in `block in <top (required)>'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks.rb:6:in `each'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/tasks.rb:6:in `<top (required)>'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:213:in `require'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:213:in `initialize_tasks'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:139:in `load_tasks'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/railties-3.0.3/lib/rails/application.rb:77:in `method_missing'
    C:/developer/skknobara/Rakefile:7:in `<top (required)>'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/rake_module.rb:25:in `load'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/rake_module.rb:25:in `load_rakefile'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:583:in `raw_load_rakefile'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:89:in `block in load_rakefile'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:160:in `standard_exception_handling'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:88:in `load_rakefile'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:72:in `block in run'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:160:in `standard_exception_handling'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:70:in `run'
    C:/Programs/Ruby193/lib/ruby/gems/1.9.1/gems/rake-10.0.3/bin/rake:33:in `<top (required)>'
    C:/Programs/Ruby193/bin/rake:23:in `load'
    C:/Programs/Ruby193/bin/rake:23:in `<main>'

我发现我的 Gemfile 中有 rails 3.0.3,所以我将其更改为 3.2.9,但现在当我运行 rake db:migrate 时,我得到:

rake aborted!
Bundler could not find compatible versions for gem "rack":
  In Gemfile:
    rails (= 3.2.9) x86-mingw32 depends on
      rack (~> 1.4.0) x86-mingw32

    rack (1.2.5)

我不确定错误是什么意思,但“gem list rack”显示我同时安装了 1.4.1 和 1.4.0。我的 Gemfile 非常简单:

gem 'rails', '3.2.9'
gem 'rack','< 1.4.1'
gem 'mysql2', '< 0.3'

有什么想法吗?

4

10 回答 10

62

我在使用 rails 2.3.5 时遇到了类似的问题,因此按照跟踪消息中的指示,我将 Rakefile 编辑为需要 'rdoc/task' 而不是 rake/rdoctask 并安装了 rdoc gem。

如果您使用的是 rake 版本 > 10.0.0 。请编辑您的 Rakefile

从:

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'

至:

require 'rake'
require 'rake/testtask'
require 'rdoc/task'
require 'tasks/rails'

如果您不想编辑 Rakefile,您可以像这样切换回旧版本的 take

gem uninstall rake -v 10.0.3
gem install rake -v 0.8.7
于 2013-01-04T09:59:40.983 回答
22

将旧应用程序迁移到 rails 2.3.15 时,我遇到了类似的问题。我通过安装旧版本的 rake 并卸载当前的 10.0.3 版本来解决它:

gem install rake --version 0.8.7
gem uninstall rake --version 10.0.3
于 2013-01-11T14:48:50.540 回答
7

我让它工作了

宝石“耙子”,“0.9.2.2”

在我的 Gemfile 中,然后运行 ​​rake

bundle exec rake db:migrate
于 2013-06-22T03:44:25.287 回答
6

我必须解决这个问题,同时不要破坏安装旧 rake 但未安装 rdoc 的地方。我添加了一个 begin...rescue 子句:

begin
  require 'rake/rdoctask'
rescue
  require 'rdoc/task'
end
于 2013-02-26T01:30:08.963 回答
6

我遇到了同样的问题......我做了上面提到的GiridharBandi

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'

至:

require 'rake'
require 'rake/testtask'
require 'rdoc/task'
require 'tasks/rails'

gem 列表中有 Rake 版本 10.0.4,但是当我尝试卸载时,它说未安装 rake。所以我忽略了这一点,继续安装 rake 0.8.7。安装后,我安装了 rdoc

gem install rdoc

<= 1.8.6 : unsupported
 = 1.8.7 : gem install rdoc-data; rdoc-data --install
 = 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!

然后一切都开始正常了。

对于 rails 3.0.6,具有相同类型的错误:

ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.

我安装了 rake 0.9.2 和 rdoc。注释掉#require 'tasks/rails' 然后一切都开始工作了。我认为 rake 问题在 rails > 3.2.9 中得到解决。

于 2013-05-16T10:58:42.253 回答
2

哦,我的上帝,我花了将近一个小时来解决这个问题,最后这是我的情况(可能对某人有帮助:)):我安装了多个 Rails 版本,所以我只是卸载了最新的版本,因为我想使用最前卫的版本( 4.0.1 现在)

所以 :

$ gem uninstall rails

我得到了这个:

Select gem to uninstall:
 1. rails-0.9.5
 2. rails-4.0.0
 3. rails-4.0.1
 4. All versions
>

所以我选择了前两个,就是这样:)现在一切都好希望这可以帮助那些像我一样神秘卡住的人:(

于 2013-11-27T08:15:29.593 回答
2

我最近遇到了类似的问题。

看起来与以下问题相同:无法运行任何 rake 命令:“错误:'rake/rdoctask'已过时且不再受支持”

我通过升级到 Rails 3.2.9 解决了这个问题。

于 2013-01-02T18:43:26.987 回答
1

像原始海报一样,我不需要 rake/rdoctask。升级我的导轨不是一种选择。答案是在您的 Gemfile 中将您的 rake 保持在 0.9.2.2。

于 2013-01-23T22:23:34.227 回答
1

这可能不是正确的方法,但我进入了我的 Gemfile.lock 文件并将我的 rake 版本从 10.0.3 更改回 0.8.7。我现在正在运行 Rails 3.0.5,并在恢复之前短暂更新到 3.0.19。我相信更新了一些 gem 并且也使得 Rails gem 正在寻找大于或等于 0.8.7 的最新版本:

rails (3.0.5)
  actionmailer (= 3.0.5)
  actionpack (= 3.0.5)
  activerecord (= 3.0.5)
  activeresource (= 3.0.5)
  activesupport (= 3.0.5)
  bundler (~> 1.0)
  railties (= 3.0.5)
railties (3.0.5)
  actionpack (= 3.0.5)
  activesupport (= 3.0.5)
  rake (>= 0.8.7)
  thor (~> 0.14.4)
rake (0.8.7)

我还卸载了 10.0.3:

gem uninstall rake --version 10.0.3

之后,一切都恢复正常运行。

如果我不回滚 rails 3.0.19,那么我会继续使用 rake 10.0.3。

希望这对某人有帮助!

于 2013-01-23T18:46:59.417 回答
1

每当我有一个基于 Bundler 的项目并且我使用的是 Ruby 1.9 时,我都会遇到这个问题。2 . 最终我发现 Bundler 并没有管理 rdoc gem,我所要做的就是在 Gemfile 中包含 rdoc(或者如果 Gemfile 已经配置为使用它,则包含 gemspec)并运行bundle install.

我似乎从来没有遇到过 1.9.3 或 2.0.0,只有 1.9.2。

于 2013-08-11T00:37:05.017 回答