BackEnd

Rails5で出力される「alias_method_chain is deprecated.」について

投稿日:2017年3月13日 更新日:

はじめに

直近のプロジェクトではRails5を使っているのですが、利用しているgem関連で下記のような警告が大量に出力されるので、少し調べてみました。
(「./bin/rails c」や「./bin/bundle exec rspec」を実行すると大量に出力されます。)

これは、Rails5からはActiveSupportのalias_method_chainが非推奨(deprecated)になり、代わりにModule#prependを使うように促しています。

alias_method_chainとは

まず、deprecatedになったalias_method_chainですが、下記のように利用します。

上記のコードは、alias_methodを使った場合は、下記と同等になります。

  • helloメソッドがhello_with_worldメソッドに置き換わる。
  • 元々のhelloメソッドはhello_without_worldメソッドとして使えるようになる。

実行結果を下記に記載しますが、置き換わっているのがわかると思います。

Module#prependとは

逆に推奨されているModule#prependの使い方ですが、下記のように使います。

  • prependされたHelloWithWorldモジュールは、継承関係上HelloUserクラスより手前に位置することになる。
  • そのため、helloメソッドをオーバーライドしたような形になる。
  • HelloWithWorldモジュールのメソッド内でsuperを呼び出すことで、元々のメソッドを呼び出すことができる。

実行結果とancestorsメソッドで継承関係を表示しておきます。
ちなみにancestorsメソッドは、クラスやモジュールのスーパークラスとincludeしているモジュールを、優先順で配列に格納して返してくれます。

Rubyリファレンス-Module#ancestors-

HelloWithWorldHelloUserの前にあるのがわかると思います。

モンキーパッチなどを書くときに利用することになると思います。
(モンキーパッチなんて書かずに、githubにプルリクする方がよいですが。。。)

とりあえず、DEPRECATION WARNINGの出力をなくしたい

Rails5にしたものの、全てのgemに対して、この警告を消すための書き換えの対応をしていくのは大変。

この出力が目障りという方は、config/application.rbに追記すれば、消すことができます。
ただし、自己責任でお願いします。

 

さいごに

deprecatedなメソッドは、今後のアップデートで利用できなくなることもありますので、しっかりと理解した上で利用し、可能であれば、置き換えていくようにしましょう。

page_footer_300rect




page_footer_300rect




-BackEnd
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

rails

Rails5.2+Pumaのデプロイ設定

1 はじめに1.1 環境2 Pumaとは?2.1 Unicornとの比較2.2 Pumaのスレッド3 Pumaの使い方4 デプロイ設定4.1 Gemを追加4.2 Capfileの設定4.3 deplo ...

rails

form_withでフォームの送信前に処理を行う方法

1 はじめに2 form_with3 サンプル4 さいごに5 参考 はじめに フォームを送信する前に処理を行いたいケース(Google Analyticsのイベントのトラッキングなど)があると思います ...

rails

deviseを使ってユーザ登録フォームを作る

1 はじめに1.1 前提条件2 deviseについて2.1 deviseとは2.2 deviseでできること3 登録処理の実装3.1 Gemのインストール3.2 deviseのインストール3.3 デフ ...

rails

RailsでS3に画像をアップロードする

1 はじめに2 今回やりたいこと3 下準備3.1 ImageMagickをインストールする3.2 Gemをインストールする4 レコード生成時にファイルを指定してアップロードする4.1 アップローダを作 ...

rails

RailsでSidekiqを使ってみた

1 はじめに1.1 実行環境2 前準備2.1 Redisのインストール3 Railsの準備3.1 プロジェクト作成3.2 新規登録時にAPIを叩く4 Sidekiqの準備4.1 Workerを作る5 ...

フォロー

follow us in feedly

page_side_300rect

2017年3月
« 2月 4月 »
 1234
567891011
12131415161718
19202122232425
262728293031 

アプリ情報

目標を達成したい方を応援する、TODOアプリもリリースしております。 下記のアイコンから無料でダウンロードできます。

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。 下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。