web-dev-qa-db-ja.com

非推奨の警告: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)

この非推奨の警告の原因とエラーを取り除く方法を見つけるにはどうすればよいですか?

15
Alex Shmatko

インストール(すでにインストールされていない場合) ack そしてターミナルで実行します:

ack alias_method_chain /Users/username/.rbenv/versions/2.3.1/lib/Ruby/gems/2.3.1/gems/

alias_method_chainが使用されているすべての場所(ファイルとコード行)を示します。

99%の確率で、一部の宝石で使用されています。

あなたがそれについてできることのリストについては 私の答え を見てください。

18
Andrey Deineko

OSXでは、次を使用できます。

grep -Ir alias_method_chain `bundle show Rails`/..

そして、それはalias_method_chainを使用するすべての宝石をリストします

4
BananaNeil

Gemfileが大きすぎる場合は、 the_silver_searcher を使用して、非推奨のalias_method_chainを検索することをお勧めします。

ag alias_method_chain /path/to/gemset

毎回/ path/to/gemsetと入力しないgepgemsbashヘルパー関数があります

grepgems alias_method_chain

これを使用するには、次の関数を.bash_profile(または任意のドットファイル内の別の場所)に追加します。

function grepgems() {
  ag $1 $GEM_HOME"/gems"
}
1
Hirurg103

Dockerのソリューション:

docker exec -it [CONTAINER_NAME]/bin/bash

apt-get installsilversearcher-ag

ag alias_method_chain $ GEM_HOME "/ gems"

0