エラー: 'rake/rdoctask' は廃止されており、サポートされていません。代わりに 'rdoc/task' (RDoc 2.4.2 以降で使用可能) を使用してください。質問する

エラー: 'rake/rdoctask' は廃止されており、サポートされていません。代わりに 'rdoc/task' (RDoc 2.4.2 以降で使用可能) を使用してください。質問する

この問題に関する最後の投稿は何らかの理由で閉じられたようですので、運試しをしてみようと思います...

単純な「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'

何かご意見は?

ベストアンサー1

Rails 2.3.5 を使用しているときにも同様の問題が発生しました。そのため、トレース メッセージの指示に従って、Rakefile を編集して rake/rdoctask ではなく 'rdoc/task' を require し、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

おすすめ記事