CA MOBILE エンジニアブログ

株式会社シーエー・モバイルのエンジニアブログです

【Rails5新機能紹介】Ruby Version Supportについて

こんにちは、シーエー・モバイルの新卒エンジニア Miaoです。

今回は、Rails5について話したいと思います。

Rails 5は2015年の秋に正式的公開する予定です。
が、まだ出てないですね。笑 来春あたりになりそうですね。

 

 Rails5の目玉

すでに色々な記事にも書いてありますが、下記はRails5の目玉です

  • Rails5 のRubyバージョンサポート
  • ActionCable
  • Turbolinks 3.0
  • Rails API
  • Others

上記の内容は一本ずつシリーズにして詳しく紹介していきたいと思います。
今回は「Rails5のRubyバージョンサポート」について詳しく紹介していきたいと思います。

 

 Ruby Version Support

Rails5はRuby2.2.1以上のバージョンしかサポートしません。

f:id:miaodi2002:20151027204716p:plain

 

Rails5の新規機能の前に、ruby 2.2の新機能・変更点をいくつかおさらいをしたいと思います。

 

Ruby2.2の新機能・変更点

・Kernel#itself

いわゆる恒等関数と呼ばれる、自身 (self) をそのまま返すメソッド Kernel#itself が追加されました。

Ruby では恒等関数の導入案は以前からありましたが、名前がなかなか決まらなかったという経緯があります。今回は itself という名前に落ち着いたようで、ようやく導入されました。

Kernel#itself は以下のような動きをします。

 

具体的な利用例ですが、以下のように配列の値自身で group_by したい場合に綺麗に書くことが出来ます。

 

Kernelモジュールに馴染みのない人の為に補足しておくと

Kernelモジュールは、グローバル関数(組み込み関数)として使えるメソッドを集めたものです。ObjectクラスはKernelをインクルードしているので、Kernelのメソッドはプログラムのどこからでもレシーバなしで利用できます。  (From AmiWiki)

 

・Binding

 Binding#local_variables
以前から定義済ローカル変数を一覧するKernel#local_variablesメソッドは存在していましたが、Binding#local_variablesはprivateでした。

それがpublicに利用可能となった変更です。

Binding#reciverは、そのbindingオブジェクトが呼び出されたもともとのレシーバ自身を返すメソッドです。(良く利用されるので新しいメソッドとして追加されました)。

Bindingをもっと知りたい方はこちらも参考にしてみてください:
http://qiita.com/lnznt/items/4c3e1050dafd59193808

 

・Enumerable

1. Enumerable#slice_after

Enumerableモジュールに配列処理用のメソッドslice_afterを追加しました。

特定の条件を満たす要素の直後でスライスするメソッドです。

配列処理をより便利になりましたね!

 

2. Enumerable#slice_when

同時にslice_whenメソッドも追加しました。

要素を前から順にブロックで評価し、その結果によって要素をグループ化した要素を持つEnumerator を返します。

1回sortしないと行けないかんじですが、Enumerable内での各要素出現数をカウントする時は使えそうです。

 

 以上

他にもかなり便利なメソッドが追加されていますので興味がある人はリファレンスを熟読されてはいかがでしょうか!

次回は「ActionCable」について紹介したいと思います。

お楽しみにしてください。

参考

1.Rails 5.0 needs ruby 2.2.1 or higher by jvanbaarsen · Pull Request #19257 · rails/rails · GitHub

2.» Ruby 2.2.0 preview1: ついに来ました!恒等関数 Kernel#itself などなど TECHSCORE BLOG

3. New Methods in Ruby 2.2