Подтвердить что ты не робот

ОШИБКА: "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'

Любые мысли?

4b9b3361

Ответ 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.

Ответ 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
>

поэтому я выбрал первые два, и это было:) Теперь все в порядке надеюсь, это поможет кому-то, кто таинственно застрял как я: (