web-dev-qa-db-ja.com

rake / rdoctaskの非推奨の警告がまだあります

バンドルを更新しましたが、rakeコマンドを実行した後もrake/rdoctaskの非推奨の警告が表示されます。

WARNING: 'require 'rake/rdoctask'' is deprecated.  Please use 'require 'rdoc/task' (in RDoc 2.4.2+)' instead.
    at /home/cheetah/.rvm/gems/Ruby-1.8.7-p302@tobiska/gems/rake-0.9.2.2/lib/rake/rdoctask.rb

私はこのヒントを読んでみました http://matthew.mceachen.us/blog/howto-fix-rake-rdoctask-is-deprecated-use-rdoc-task-instead-1169.html しかし私のRakefileはOKです。

この問題を解決する方法がわかりません。任意のヒント?どうもありがとう。

マーティン

20
Martin Pešout

システムに複数のバージョンのrakeをインストールし、実行してそれらを表示できます。

$ gem list
=> rake

(0.9.2.2、0.9.2、0.8.7)プロジェクトでバージョンを定義するには、Gemfileで次のように定義します。

gem 'rake', '0.8.7'

次に実行します

bundle update rake

これで、プロジェクトのバージョンがGemfileで指定されたとおりになり、警告がなくなりました。

19
Galuga

Gemfileを変更し、「bundle update rake」を実行することに加えて、私も実行する必要があります。

gem uninstall rake -v 0.9.2.2
gem uninstall rake -v 0.9.2
gem install rake -v 0.8.7
4
TatianaP

Railsスタック全体を呼び出さないプロジェクトでは、rdocをGemfileに追加することが成功の鍵でした。

group :development, :test do
  gem 'rake', '~> 0.9.2.2'
  gem "rdoc", '~> 3.12'
end

更新:これはまだRails 3.0.xプロジェクトで私を悩ませていました。Rakefile、gemはすべて問題ないように見えましたが、まだ問題が発生していました。警告がどこにあるかを正確に知るためにgems/rake-0.9.2.2/lib/rake/rdoctask.rbのカナリア:

if Rake.application
  begin
    raise 'where am i'                                                                
  rescue                                                                       
    puts $@                                                                    
  end 
  Rake.application.deprecate('require \'rake/rdoctask\'', 'require \'rdoc/task\' (in RDoc 2.4.2+)', __FILE__)
end

これはすぐにRailsスタック自体の問題を指摘しました。簡単に確認すると、Rails 3.0.8はrake/rdoctaskの要件でいっぱいです。 。Rails(3.0.9以上だと思います)に更新すると、問題が修正されます(または、他の人が提案しているようにrakeをダウングレードできます)。

しかし、〜3.0.8に固執していて、rakeをダウングレードしたくない場合は、Rakefileでignore_deprecateを設定することで、警告を抑制することができます。

require File.expand_path('../config/application', __FILE__)
require 'rake'
require 'rake/testtask'
require 'rdoc/task'

# add this (and perhaps make it conditional on Rails.version if you like):
Rake.application.options.ignore_deprecate = true

Babylon::Application.load_tasks

なぜ警告を抑制するのですか?私の主な動機は、rakeを呼び出すcronジョブが偽の出力をログに記録したり電子メールで送信したりしないようにすることでした。

3
tardate