如何在Rake中检测导致弃用警告的原因

And*_*imm 44 ruby debugging rake ruby-on-rails

当我这样做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]
Run Code Online (Sandbox Code Playgroud)

虽然不是很相关,但这里是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
Run Code Online (Sandbox Code Playgroud)

做一个git grep -i last_comment表明它不在我的代码中 - 大概是在第三方宝石中.

我如何找出导致弃用警告的原因?

Chr*_*ott 28

尝试更新gem "rspec-rails", "~> 3.4.4",解决了我的弃用警告.

  • Gemfile:`gem'rspec-rails','〜> 3.4.2'`,控制台:`$ bundle update rspec rspec-rails` (5认同)
  • rspec-core 3.4.2对我来说仍然有这个警告.更新到3.4.4解决了它.请参阅https://github.com/rspec/rspec-core/issues/2210. (2认同)

Ken*_* I. 25

我发现更容易修改从中warnraise中的行rake-11.1.0/lib/rake/task_manager.rb:10.

对我来说,有问题的宝石是rspec(在3.4.4中修复)和rubocop(在0.38.0中固定).

  • 将rspec-core更新为3.4.4并将rspec-rails更新为3.4.2解决了这个问题. (7认同)

Ste*_*fan 5

您可以通过以下方式递归地 grep您的宝石:

grep -r last_comment /path/to/gems
Run Code Online (Sandbox Code Playgroud)


Nec*_*net 5

这不是RSpec的故障,错误来自耙有一个了几个星期前,将添加的警告,有一个跟进这里.

似乎Rspec已经完全使用last_descriptionlast_comment.如果可能的话,尝试更新到更新版本的rspec-coreGem,比如@ chris-scott建议.我跑去做伎俩

bundle update rspec-core


ant*_*ony 5

在本描述,你可以这样做:

# application.rb
ActiveSupport::Deprecation.debug = true
Run Code Online (Sandbox Code Playgroud)

这将为您提供弃用的完整堆栈跟踪。