ОШИБКА: "rake/rdoctask" устарел и больше не поддерживается. Вместо этого используйте 'rdoc/task' (доступно в RDoc 2.4.2+)
Кажется, последнее сообщение для этой проблемы было закрыто по той или иной причине, поэтому я попробую удачу...
Я пытаюсь запустить простую команду "rake db: migrate". Когда я это сделаю, я получаю ошибку в названии. Да, решение "кажется" очевидным, но это не потому, что я не мой Rakefile не содержит ссылок на "rake/rdoctask". Кажется, это происходит из документа document.rake, но когда я пытаюсь изменить этот файл в соответствии с рекомендацией ошибки, я получаю другую ошибку. Я нашел пару сообщений, объявляющих, что это известная проблема, но ничего, что я нашел, не указывает, как исправить или обойти это.
Есть ли у кого-нибудь идеи, как это исправить? Ниже приведен результат команды rake с помощью: -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>'
Я обнаружил, что у меня были рельсы 3.0.3 в моем Gemfile, поэтому я изменил его на 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)
Я не уверен, что означает ошибка, но "стойка списка драгоценных камней" показывает, что у меня установлены как 1.4.1, так и 1.4.0. Мой Gemfile довольно прост:
gem 'rails', '3.2.9'
gem 'rack','< 1.4.1'
gem 'mysql2', '< 0.3'
Любые мысли?
Ответы
Ответ 1
У меня была аналогичная проблема с использованием рельсов 2.3.5, так, как указано в сообщении трассировки, я отредактировал Rakefile, чтобы требовать "rdoc/task" вместо rake/rdoctask и установлен rdoc gem.
Если вы используете версию рейкa > 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
Ответ 2
У меня возникла аналогичная проблема при переносе моего старого приложения на rails 2.3.15. Я решил это, установив более старую версию рейка и удалив текущую версию 10.0.3:
gem install rake --version 0.8.7
gem uninstall rake --version 10.0.3
Ответ 3
Я заработал, поставив
gem 'rake', '0.9.2.2'
в моем Gemfile и затем запустить rake как
bundle exec rake db:migrate
Ответ 4
Я должен был исправить это, не разбивая места, у которых есть старый рейк, но не установлен 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'
Rake версия 10.0.4 была в списке драгоценных камней, но когда я попытался удалить, он сказал, что 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!
а затем все стало работать отлично.
Для рельсов 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', а затем все начало работать. Я думаю, что проблема рейка решена в rails > 3.2.9.
Ответ 6
Недавно у меня была аналогичная проблема.
Похож на ту же проблему, что: Невозможно выполнить команду rake: "ОШИБКА: 'rake/rdoctask' устарел и больше не поддерживается"
Я решил его, обновив до Rails 3.2.9.
Ответ 7
Возможно, это неправильный способ сделать это, но я зашел в свой файл Gemfile.lock и изменил мою версию рейка с 10.0.3 до 0.8.7. Сейчас я запускаю Rails 3.0.5 и обновился до версии 3.0.19, прежде чем возвращаться обратно. Я считаю, что обновил некоторые драгоценные камни, а также сделал так, чтобы камень Rails искал самую новую версию, большую или равную 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
После этого все вернется к запуску, как и должно быть.
Если бы я не откатывал рельсы 3.0.19, я бы продолжал использовать рейк 10.0.3.
Надеюсь, это поможет кому-то!
Ответ 8
Как и оригинальный плакат, у меня нет необходимости использовать rake/rdoctask.
Модернизация моих рельсов не является вариантом. Ответ заключается в том, чтобы сохранить ваш рейк в 0.9.2.2 в вашем Gemfile.
Ответ 9
Я сталкиваюсь с этим, когда у меня есть проект на основе Bundler, и я использую Ruby 1.9. 2. В конце концов я выясняю, что Bundler не управляет gdoc gem, и все, что я должен сделать, чтобы исправить проблему, - это включить rdoc в Gemfile (или gemspec, если Gemfile уже настроен для его использования) и запустить bundle install
.
Я никогда не сталкивался с этим с 1.9.3 или 2.0.0, только 1.9.2.
Ответ 10
О, боже, я собирался с этим почти час и, наконец, вот мое дело (может помочь кому-то:)):
Я установил несколько версий рельсов
поэтому я просто удалил последнюю версию, так как хочу использовать самый острый (теперь 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
>
поэтому я выбрал первые два, и это было:)
Теперь все в порядке
надеюсь, это поможет кому-то, кто таинственно застрял как я: (