可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
Seems the last post for this problem was closed for one reason or another so I'll try my luck...
I'm trying to run a simple "rake db:migrate" command. When I do, I get the error in the title. Yes, the solution "appears" obvious but it's not because I don't my Rakefile does not contain any references to 'rake/rdoctask'. It seems to be coming from documentation.rake but when I try to change that file as recommended by the error, I get a different error. I have found a couple of posts declaring this to be a known issue but nothing I've found indicates how to fix or work around this.
Does anyone have any ideas how to fix it? Below is the output from the rake command with a --trace:
$ 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>'
I discovered that I had rails 3.0.3 in my Gemfile so I changed it to 3.2.9, but now when I run rake db:migrate I get:
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)
I'm not sure what the error means but "gem list rack" shows I have both 1.4.1 and 1.4.0 installed. My Gemfile is pretty simple:
gem 'rails', '3.2.9'
gem 'rack','< 1.4.1'
gem 'mysql2', '< 0.3'
Any thoughts?
回答1:
I had similar problem using rails 2.3.5 so as instructed in the trace message I have edited the Rakefile to require 'rdoc/task' instead of rake/rdoctask and installed rdoc gem.
If you are using rake version > 10.0.0 . please edit your Rakefile
from:
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'
to:
require 'rake'
require 'rake/testtask'
require 'rdoc/task'
require 'tasks/rails'
If you don't want to edit the Rakefile you can switch back to older version of take like this
gem uninstall rake -v 10.0.3
gem install rake -v 0.8.7
回答2:
I ran into similar problem when migrating my old app to rails 2.3.15. I solved it by installing an older version of rake, and uninstalling current 10.0.3 version:
gem install rake --version 0.8.7
gem uninstall rake --version 10.0.3
回答3:
I got it to work by putting
gem 'rake', '0.9.2.2'
in my Gemfile and then running rake as
bundle exec rake db:migrate
回答4:
I had to fix this while not breaking on places that have old rake but not rdoc installed. I added a begin...rescue clause:
begin
require 'rake/rdoctask'
rescue
require 'rdoc/task'
end
回答5:
I came across the same issue...I did what GiridharBandi mentioned above:
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'
to:
require 'rake'
require 'rake/testtask'
require 'rdoc/task'
require 'tasks/rails'
Rake version 10.0.4 was there in the gem list but when I tried to uninstall, it said that rake is not installed. So I ignored this and proceeded to install rake 0.8.7. Once its installed, I installed 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!
and then everything started working just fine.
For rails 3.0.6, with the same kind of error:
ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.
I installed rake 0.9.2 and also rdoc. commented out the #require 'tasks/rails' and then everything started working. I think rake problem is resolved in rails > 3.2.9.
回答6:
I had a similar problem recently.
Looks like the same problem as: Can't run any rake command: "ERROR: 'rake/rdoctask' is obsolete and no longer supported"
I solved it by upgrading to Rails 3.2.9.
回答7:
Like the original poster, I don't have a require of rake/rdoctask.
Upgrading my rails is not an option. The answer is to keep your rake at 0.9.2.2 in your Gemfile.
回答8:
This probably isn't the right way to do this, but I went into my Gemfile.lock file and changed my rake version back from 10.0.3 to 0.8.7. I'm running Rails 3.0.5 right now, and had updated briefly to 3.0.19 before reverting back. I believe that updated some gems and also made it so that the Rails gem was looking for the newest version greater than or equal to 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)
I also uninstalled 10.0.3:
gem uninstall rake --version 10.0.3
After that, everything is back to running as it should.
If I didn't roll back rails 3.0.19, then I would have kept using rake 10.0.3.
Hope this helps someone!
回答9:
I run into this whenever I have a Bundler-based project and I'm using Ruby 1.9.2. Eventually I figure out that Bundler isn't managing the rdoc gem, and all I have to do to fix the problem is include rdoc in the Gemfile (or the gemspec if Gemfile is already configured to use it) and run bundle install
.
I never seem to run into this with 1.9.3 or 2.0.0, only 1.9.2.
回答10:
Oh my god, I was figting with this for almost hour and finally here is my case (may help someone :) ):
I got myself multiple rails versions installed
so I just uninstalled the latest one as I want to use the most edgy one (the 4.0.1 for now)
so :
$ gem uninstall rails
and I got this:
Select gem to uninstall:
1. rails-0.9.5
2. rails-4.0.0
3. rails-4.0.1
4. All versions
>
so I selected first two and that was it :)
now everything is OK
hope this helps someone who got mysteriously stuck as me :(