ПРЕДУПРЕЖДЕНИЕ О ДЕПРЕКАЦИИ: alias_method_chain устарела
Я обновил проект до Rails 5. Когда я запустил rspec
, я получил предупреждение
DEPRECATION WARNING: alias_method_chain is deprecated. Please, use Module#prepend instead.
From module, you can access the original method using super.
(called from <top (required)> at /home/alex/projects/myproject/config/application.rb:13)
Строка сбой в application.rb:
Bundler.require(*Rails.groups)
Как узнать, что вызывает это предупреждение, и как избавиться от ошибки?
Ответы
Ответ 1
Установите (если он уже установлен) ack и запустите в терминале:
ack alias_method_chain /Users/username/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.1/gems/
Он укажет все места, где используется alias_method_chain
(файлы и строки кода).
В некоторых драгоценных камнях используется 99%.
См. этот мой ответ для списка вещей, которые вы можете сделать с ним.
Ответ 2
В OSX вы можете использовать:
grep -Ir alias_method_chain `bundle show rails`/..
И это перечислит все драгоценные камни, которые используют alias_method_chain
Ответ 3
Если Gemfile слишком большой, я бы рекомендовал использовать the_silver_searcher для поиска устаревшего alias_method_chain, потому что он быстрее
ag alias_method_chain /path/to/gemset
У меня есть gepgems
bash вспомогательная функция, чтобы не вводить /path/to/gemset каждый раз
grepgems alias_method_chain
Чтобы использовать его, добавьте следующую функцию в ваш .bash_profile (или где-нибудь еще в dotfiles, который вам нравится)
function grepgems() {
ag $1 $GEM_HOME"/gems"
}