2016-03-13 25 views
44

Khi tôi làm bundle exec rake -T (hoặc bundle exec rake), tôi nhận được cảnh báo không chấp nhận:Làm thế nào để phát hiện nguyên nhân gây ra một cảnh báo deprecation trong 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] 

Mặc dù không thực sự có liên quan, đây là 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 

Thực hiện một git grep -i last_comment cho biết nó không nằm trong mã của tôi - có lẽ nó nằm trong một viên ngọc của bên thứ ba.

Làm cách nào để tìm hiểu nguyên nhân gây ra cảnh báo không dùng nữa?

+0

Giải pháp thay thế, yêu cầu 'rake' sớm hơn 11.0 đã xóa thông báo phản đối. –

Trả lời

25

Tôi tìm thấy nó dễ dàng hơn sửa đổi dòng từ warn để raise trong rake-11.1.0/lib/rake/task_manager.rb:10.

Đối với tôi, đá quý vi phạm là rspec (fixed in 3.4.4) và rubocop (fixed in 0.38.0).

+0

Tôi đã thay đổi cảnh báo để tăng trong task_manger.rb, nhưng tôi vẫn không thể sử dụng rake (db: migrate). Tôi cũng nhận thấy rằng tôi có nhiều phiên bản cào trong thư mục đá quý của mình, tôi có nên xóa phiên bản mới hơn không? –

+7

Cập nhật rspec-core thành 3.4.4 & rspec-ray thành 3.4.2 giải quyết nó. –

5

Bạn có thể đệ quy grep đá quý của bạn, với:

grep -r last_comment /path/to/gems 
+0

Làm 'grep -r last_comment' cho' grep: warning: tìm kiếm đệ quy của stdin' –

+0

Xin lỗi. Tôi đã cập nhật câu trả lời của mình./path/to/gems phụ thuộc vào cài đặt của bạn. – Stefan

+0

Nếu bạn có nhiều dự án, sau đó sẽ không '/ path/to/gems' bao gồm các đá quý cho tất cả các dự án của bạn? –

28

Thử cập nhật gem "rspec-rails", "~> 3.4.4", đã giải quyết cảnh báo không dùng nữa cho tôi.

+2

rspec-core 3.4.2 vẫn có cảnh báo này cho tôi. Cập nhật lên 3.4.4 đã giải quyết nó. Xem https://github.com/rspec/rspec-core/issues/2210. – jwadsack

+5

Gemfile: 'gem 'rspec-rails', '~> 3.4.2'', Giao diện điều khiển:' $ bundle update rspec rspec-rails' – blackchestnut

5

Nó không phải là rspec fault, lỗi xuất phát từ rake có một số commit một vài tuần trước đã thêm cảnh báo, đã theo dõi here.

Dường như Rspec đã tuân thủ sử dụng last_description trên last_comment. Nếu có thể, hãy thử cập nhật lên phiên bản mới hơn của rspec-core Đá quý, như @ chris-scott được đề xuất. Tôi chạy đến làm các trick

bundle update rspec-core

2

Như đã trình bày trong post này, bạn có thể làm:

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

này sẽ cung cấp cho bạn đầy đủ stack trace của deprecation.

Các vấn đề liên quan