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を使用して同様の問題が発生したため、トレースメッセージで指示されたように、rake/rdoctaskの代わりに「rdoc/task」を要求するようにRakefileを編集し、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 を編集したくない場合は、次のようにして古いバージョンのテイクに戻すことができます。

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

古いレーキがあるがrdocがインストールされていない場所で壊れないようにしながら、これを修正する必要がありました。begin...rescue 句を追加しました。

begin
  require 'rake/rdoctask'
rescue
  require 'rdoc/task'
end
于 2013-02-26T01:30:08.963 に答える
2

最近、同様の問題がありました。

以下と同じ問題のようです: Can't run any rake command: "ERROR: 'rake/rdoctask' is obsolete and no longer supported"

Rails 3.2.9にアップグレードすることで解決しました。

于 2013-01-02T18:43:26.987 に答える
2

なんてこった、私はこれでほぼ1時間格闘していましたが、ついにこれが私のケースです(誰かを助けるかもしれません:)):複数のレールバージョンをインストールしたので、最もエッジの効いたバージョンを使用したいので、最新のものをアンインストールしました(今のところ 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
>

だから私は最初の2つを選択しました:)これですべてがOKです。

于 2013-11-27T08:15:29.593 に答える
1

元のポスターのように、私はrake/rdoctaskの必要はありません。Railsをアップグレードすることはできません。答えは、Gemfileでレーキを0.9.2.2に保つことです。

于 2013-01-23T22:23:34.227 に答える
1

これはおそらく正しい方法ではありませんが、Gemfile.lock ファイルを調べて、レーキ バージョンを 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 に答える