ОШИБКА: rake / rdoctask устарел и больше не поддерживается

Совершенно неожиданно я начал получать следующее сообщение об ошибке:

(in /Users/me/.rvm/gems/ruby-1.9.3-p125@mysql2/gems/rails-0.9.5)
rake aborted!
ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.
/Users/me/.rvm/gems/ruby-1.9.3-p125@mysql2/gems/rails-0.9.5/Rakefile:3:in `<top (required)>'

Когда я делаю рельсы (в моем терминале среды разработки - Mac Mountain Lion). Это приложение находится в производстве, поэтому я перешел в производственную среду, провел демонстрацию пакетов и изменил свой Gemfile, чтобы закодировать версии гемов.

Вот что у меня сейчас в моей локальной среде разработки (что вызывает сообщение об ошибке).

actionmailer (3.2.3)
actionpack (3.2.3)
activemodel (3.2.3)
activerecord (3.2.3)
activeresource (3.2.3)
activesupport (3.2.3)
annotate (2.4.1.beta1)
arel (3.0.2)
bcrypt-ruby (3.0.1)
bootstrap-datepicker-rails (0.6.15)
bootstrap-sass (2.0.2)
builder (3.0.4)
bundler (1.1.3)
coffee-rails (3.2.2)
coffee-script (2.2.0)
coffee-script-source (1.6.1)
commonjs (0.2.6)
devise (2.0.4)
diff-lcs (1.1.3)
erubis (2.7.0)
execjs (1.4.0)
factory_girl (3.2.0)
factory_girl_rails (3.2.0)
hike (1.2.1)
i18n (0.6.4)
journey (1.0.4)
jquery-rails (2.0.2)
json (1.7.1)
less (2.2.2)
less-rails (2.2.6)
libv8 (3.3.10.4)
mail (2.4.4)
mime-types (1.21)
multi_json (1.6.1)
mysql2 (0.3.11)
nokogiri (1.5.6)
orm_adapter (0.0.7)
polyglot (0.3.3)
rack (1.4.5)
rack-cache (1.2)
rack-ssl (1.3.3)
rack-test (0.6.2)
rails (3.2.3)
railties (3.2.3)
rake (10.0.3)
rdoc (3.4)
rest-client (1.6.7)
rspec (2.6.0)
rspec-core (2.6.4)
rspec-expectations (2.6.0)
rspec-mocks (2.6.0)
rspec-rails (2.6.1)
sass (3.2.7)
sass-rails (3.2.5)
sprockets (2.1.3)
stripe (1.7.0)
therubyracer (0.10.1)
thor (0.14.6)
tilt (1.3.5)
tinymce-rails (3.4.8)
treetop (1.4.12)
twitter-bootstrap-rails (2.1.0)
tzinfo (0.3.37)
uglifier (1.2.4)
warden (1.1.1)
webrat (0.7.1)

Я исследовал Stackoverflow и Интернет, и ни одно из предложений не сработало (изменение версии гема rake на что-то другое, например 0.8.7 и т. Д., Редактирование моего приложения Rakefile для подавления ошибок устаревания и т. Д.). Я также добавил rdoc и в моем Rakefile мне потребовалось 'rdoc / task'

Все-таки ошибка та же.


person EastsideDev    schedule 12.03.2013    source источник


Ответы (5)


Просто чтобы помочь всем, кто сталкивался с этой проблемой. Если вы похожи на меня, то ваша проблема в том, что текущая версия рельсов - 4, и вы хотите использовать более старую версию, например 3.0.7.

Если вы устанавливаете рельсы только для того, чтобы изучить его, скажем, а учебник, который вы используете, предназначен для версии рельсов 3.0.x ИЛИ ваша работа требует использования более старой версии рельсов ... тогда вы можете залезть в эту дыру.

В моем случае мне свалили проект рельсов 3.0.7, и мне сказали изучить рельсы и внести некоторые улучшения в этот код.

Итак, я только начал изучать рельсы и следовал инструкциям, пока не получил эту ошибку при выполнении 'rake db: migrate'

rake aborted!
ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.
/Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `require'
/Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks/documentation.rake:1:in `<top (required)>'
/Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `load'
/Users/pj/.rvm/gems/ruby-1.9.3-p448/gems/railties-3.0.7/lib/rails/tasks.rb:15:in `block in <top (required)>'

Это произошло, потому что я использовал старую версию рельсов ... в моем случае 3.0.7. Если вы запустите 'bundle show', как я тогда, вы можете увидеть, что используете rake версии 10.0.0 или что-то в этом роде ... и вам нужно запустить rake 0.9.2 ... вот откуда проблема ..

Решение для меня заключалось в том, чтобы (а) добавить драгоценный камень в мой гем-файл и (б) установить пакет

Итак, в моем гем-файле я добавил:

gem 'rake', '0.9.2'

Затем сделал

'bundle install'

Получил это сообщение:

You have requested:
  rake = 0.9.2

The bundle currently has rake locked at 10.1.0.
Try running `bundle update rake`

И я сделал это ...

bundle update rake.

И все прошло нормально.

затем, когда я сделал «rake db: migrate», это просто сработало.

Надеюсь, это кому-то поможет. Vida.

PS: если вы новичок в rails, как я, и унаследовали более старое приложение rails, тогда, ради бога, НИКОГДА не запускайте «обновление пакета», иначе вы попадете в мир боли. Эта команда обновляет все ваши драгоценные камни до самых последних версий, и вы получаете множество проблем с несовместимостью. Единственный выход из этого - если вам повезло, что у вас установлен git, и вы можете выполнить `` git checkout '', чтобы вернуться ...

person Vida    schedule 22.08.2013
comment
Вы должны убедиться, что ваш гем-файл является надежным, а не рассчитывать на то, что команда разработчиков НЕ запускает обновление пакета. - person EastsideDev; 23.08.2013

Я столкнулся с той же проблемой, когда попытался установить драгоценные камни с помощью команды rake gems:install, моя версия rails - rails2.3.2, и у меня установлен rvm. мой список драгоценных камней,

actionmailer (2.3.2)
actionpack (2.3.2)
activerecord (2.3.2)
activeresource (2.3.2)
activesupport (2.3.2)
bundler (1.3.5)
rails (2.3.2)
rake (10.0.4)
rubygems-bundler (1.1.1)
rvm (1.11.3.7)

так удалил грабли командой

rvm use ruby-1.8.7-p371@global && gem uninstall rake -v 10.0.4

затем я установил грабли старой версии

rvm use ruby-1.8.7-p371@global && gem install rake -v 0.8.7

теперь rake gems:install отлично работает

надеюсь, что это может помочь кому-нибудь!

person Arivarasan L    schedule 07.05.2013

При обновлении до rails 4.0.0 я получил ту же ошибку.

rails -v
(in /Users/oma/.rvm/gems/ruby-2.0.0-p247/gems/rails-0.9.5)
rake aborted!
ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.
/Users/oma/.rvm/gems/ruby-2.0.0-p247/gems/rails-0.9.5/Rakefile:3:in `<top (required)>'
(See full trace by running task with --trace)

Для обновления удалил номер версии в Gemfile

 source 'https://rubygems.org'
 gem 'rails'   # NO VERSION

и сделал bundle update, поскольку я думал, что это будет последний. Но каким-то образом я получил rails 0.9.5. Это похоже на розыгрыш, правда, лол

$ gem list rails
rails (4.0.1.rc2, 4.0.0, 0.9.5)

Я не могу сказать вам со 100% уверенностью, что это была причина, но мы были двумя людьми, работающими над одной веткой и обнаружившими одну и ту же ошибку. Исправление сработало для нас обоих. Просто

укажите версию рельсов!

$gem uninstall rails -v 0.9.5
Gemfile
  source 'https://rubygems.org'
  gem 'rails', '4.0.0'

затем связать, запустить rails -v, хихикать (или плакать) и вернуться к созданию

person oma    schedule 22.10.2013

Взгляните на аналогичное решение проблемы в StackOverflow

Другой вариант - использовать (пример взят из Redmine Rakefile)

require 'rdoc'
require 'rdoc/task'

Вместо того

require 'rake/testtask'
require 'rake/rdoctask'
person Andriy Samilyak    schedule 29.03.2013
comment
Учтите, что это не решает проблему. Это просто заставляет не замечать устаревание. - person EastsideDev; 02.04.2013

Следующее работает для меня с использованием ruby ​​1.9.3p448 (2013-06-27, ревизия 41675):

1) Используйте rake версии 10.1.0 (поместите следующее в свой Gemfile):

gem 'rake', '10.1.0'

(Обратите внимание, что вы, вероятно, можете использовать другую версию, но номер строки ниже может измениться.)

2) Прокомментируйте строку 54 вашего Rakefile и замените ее следующим образом:

#require 'rake/rdoctask'
gem 'rdoc', ">= 2.4.2"
require 'rdoc/task'

3) Тест

$ bundle install
$ bundle exec rake
person l3x    schedule 07.11.2013