【问题标题】:ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead错误:“rake/rdoctask”已过时,不再受支持。改用“rdoc/task”(在 RDoc 2.4.2+ 中可用)
【发布时间】:2013-01-02 05:10:16
【问题描述】:

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

我正在尝试运行一个简单的“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'

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.2


    【解决方案1】:

    我在使用 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
    

    【讨论】:

    • 尝试升级 rails 2 应用程序以准备升级到 rails 3 - 遇到了这个问题,经过一番拉扯后,我尝试了这个,它成功了!是的!
    • 对我来说,在 Rakefile 中我有 require 'rake' 而不是 'rake/rdoctask'...我该如何解决这个问题?当我将 'rake' 替换为 'rdoc/task' 时,我现在遇到了 no such file to load -- rdoc/task 的错误
    • 我仍然收到错误无法加载此类文件--tasks/rails。你能帮我giridharbandi吗?
    • 也可以试试rdoc/task,而不是rake/task。它适用于我的项目(ruby 1.8.7)
    • @GerardWesterhof 我仍然得到未初始化的常量 Rake::RDocTask
    【解决方案2】:

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

    gem install rake --version 0.8.7
    gem uninstall rake --version 10.0.3
    

    【讨论】:

    • 谢谢 - 只需要在 2.3.5 上运行旧应用程序,默认 rake gem 是 10.0.3。你的回答帮我解决了。
    • 谢谢。它也救了我的命。
    • 我删除了通过 APT 安装的旧版本的 rails 和 rake。这些导致与使用 gem 安装的版本发生冲突......现在一切似乎都运行得更顺利了!
    【解决方案3】:

    我把它放了

    宝石'耙子','0.9.2.2'

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

    bundle exec rake db:migrate
    

    【讨论】:

    • 这是原始问题的答案。 user1143970 正在运行没有 GiridharBandi 描述的 Rakefile 条目的 rails 3.0(我不知道 3.2)。此外,danijel 的解决方案不起作用,至少它对我不起作用,因为 thor 似乎依赖于 rake 10+。我开始沿着 Ben Atkin 的路线走,但很快就变得一团糟。我的猜测是@JstRoRR 也在运行 Rails 3.0 以外的其他东西。
    【解决方案4】:

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

    begin
      require 'rake/rdoctask'
    rescue
      require 'rdoc/task'
    end
    

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题...我做了上面提到的 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 中得到解决。

      【讨论】:

        【解决方案6】:

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

        看起来与以下问题相同:Can't run any rake command: "ERROR: 'rake/rdoctask' is obsolete and no longer supported"

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

        【讨论】:

        • 好的,在添加最后一个编辑并多玩一点之后,我设法让我的所有版本都正常,现在一切正常。似乎我的问题是回到使用旧版本的 rails 构建的项目和我自己对构建过程缺乏了解的组合。学到很多...谢谢!
        【解决方案7】:

        哦,天哪,我花了将近一个小时来解决这个问题,最后这是我的情况(可能对某人有帮助:)): 我给自己安装了多个 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
        >
        

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

        【讨论】:

        • 这对您的特殊情况有所帮助。我在只运行一个单一的 rails 版本时遇到了同样的问题。
        【解决方案8】:

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

        【讨论】:

          【解决方案9】:

          这可能不是正确的方法,但我进入了我的 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。

          希望这对某人有所帮助!

          【讨论】:

          • 这行得通,但卸载 10.0.3 我运行 bundle exec rake db:migrate 并使用 0.8.7 版本的 gem 执行任务
          【解决方案10】:

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

          我似乎从未在 1.9.3 或 2.0.0 中遇到过这种情况,只有 1.9.2。

          【讨论】:

            猜你喜欢
            • 2013-06-25
            • 2013-02-28
            • 2013-11-22
            • 1970-01-01
            • 1970-01-01
            • 2011-07-06
            • 2011-12-11
            • 2013-03-27
            • 2011-02-28
            相关资源
            最近更新 更多