web-dev-qa-db-ja.com

Rakeで非推奨の警告の原因を検出する方法

私がする時 bundle exec rake -T(またはbundle exec rake)、廃止の警告が表示されます:

Andrews-Air:nabu agrimm$ bundle exec rake --trace -T
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
rake about                               # List versions of all Rails frameworks and the environment
[snip]

実際には関係ありませんが、Gemfileは次のとおりです。

source 'https://rubygems.org'

gem 'Rails', '~> 3.2.22.2'

gem 'mysql2'

group :assets do
  gem 'coffee-Rails', '~> 3.2.1'
  gem 'compass-Rails'

  gem 'therubyracer'
  gem 'libv8'

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-Rails'
gem 'haml-Rails'
gem 'to-csv', :require => 'to_csv'
gem 'kaminari'
gem 'oai'
gem 'analytical'

gem 'country-select'
gem 'activeadmin'
gem 'sass-Rails',  '~> 3.2.3'
gem 'meta_search', '>= 1.1.0.pre'

gem 'devise', '2.2.3'
gem 'cancancan', '~> 1.12.0'

gem 'squeel'
gem 'nilify_blanks'

gem 'sunspot_Rails'
gem 'sunspot_solr'

gem 'Unicorn'

gem 'Ruby-filemagic'

gem 'capistrano'
gem 'capistrano-ext'
gem 'capistrano-Unicorn'

gem 'rollbar', '~> 2.8.3'
gem 'newrelic_rpm'

gem 'progress_bar'
gem 'paper_trail', '~> 2'
gem 'quiet_assets'
gem 'roo', '~> 2.1.0'
gem 'roo-xls', :github => 'roo-rb/roo-xls', :ref => '0a5ef88'
gem 'streamio-ffmpeg'
gem 'rake'

gem 'rmagick'

gem 'whenever', :require => false

group :development, :test do
  gem 'turn', '~> 0.8.3', :require => false
  gem 'rspec-Rails', '~> 2.0'
  gem 'sextant'
  gem 'thin'

  gem 'spring'
  gem 'spring-commands-rspec'

  gem 'pry'
  gem 'pry-Rails'

  gem 'letter_opener'

  gem 'guard-bundler'
  gem 'guard-Rails'
  gem 'guard-rspec'
  gem 'guard-sunspot'

  gem 'rb-inotify', :require => Ruby_PLATFORM.include?('linux') ? 'rb-inotify' : false
  gem 'rb-fsevent', :require => Ruby_PLATFORM.include?('darwin') ? 'rb-fsevent' : false
end

group :development do
  gem 'annotate'
  gem 'binding_of_caller'
  gem 'better_errors'
  gem 'rubocop'
end

group :test do
  gem 'capybara'
  gem 'poltergeist'
  gem 'factory_girl_Rails'
  gem 'database_cleaner'
  gem 'email_spec'
  gem 'launchy'
end

git grep -i last_commentは、それが私のコードにないことを示します-おそらくそれはサードパーティのgemにあるでしょう。

非推奨の警告の原因を特定するにはどうすればよいですか?

44
Andrew Grimm

rake-11.1.0/lib/rake/task_manager.rb:10warnからraiseへの行を変更する方が簡単だと思います。

私にとって問題の宝石はrspec( .4.4で修正 )とrubocop( .38.0で修正 )です。

25
Ken I.

更新してみてくださいgem "rspec-Rails", "~> 3.4.4"、非推奨の警告を解決しました。

28
Chris Scott

rspec fault ではなく、エラーは commit 警告を追加した数週間前に、フォローアップ here がありました。

Rspecは既にlast_descriptionlast_commentで使用することに準拠しているようです。可能であれば、@ chris-scottが提案したように、rspec-core Gemの新しいバージョンに更新してみてください。私はトリックを実行しました

bundle update rspec-core

5
Necronet

再帰的に宝石をgrepすることができます。

grep -r last_comment /path/to/gems
5
Stefan

この post で説明されているように、次のことができます。

# application.rb
ActiveSupport::Deprecation.debug = true

これにより、廃止の完全なスタックトレースが得られます。

3
anthony