【问题标题】:ERROR: 'rake/rdoctask' is obsolete and no longer supported错误:“rake/rdoctask”已过时,不再受支持
【发布时间】:2013-02-28 17:37:58
【问题描述】:

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

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

还是一样的错误。

【问题讨论】:

    标签: ruby-on-rails rake mysql2 rdoc


    【解决方案1】:

    只是为了帮助遇到这种麻烦的其他人。 如果你和我一样,那么你的问题是当前版本的 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”返回...

    【讨论】:

    • 你需要确保你的 gemfile 是健壮的,而不是指望开发团队不运行包更新。
    【解决方案2】:

    当我尝试通过命令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 &amp;&amp; gem uninstall rake -v 10.0.4

    然后我安装了旧版本的 rake

    rvm use ruby-1.8.7-p371@global &amp;&amp; gem install rake -v 0.8.7

    现在rake gems:install 工作正常

    希望对大家有所帮助!

    【讨论】:

      【解决方案3】:

      升级到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,傻笑(或哭泣)然后继续制作

      【讨论】:

        【解决方案4】:

        看看similar problem solution on StackOverflow

        另一个选项是使用(取自 Redmine Rakefile 的示例)

        require 'rdoc'
        require 'rdoc/task'
        

        代替

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

        【讨论】:

        • 请注意,这并不能解决问题。它只会导致弃用不被注意到。
        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-06-25
          • 1970-01-01
          • 2017-02-15
          • 1970-01-01
          • 2012-01-31
          • 2021-04-14
          • 2017-08-03
          • 1970-01-01
          相关资源
          最近更新 更多