毎年12月25日に Ruby のアップデートがあるのが恒例となっていますが、今年も例にもれず12月25日に Ruby 2.5.0 がリリースされました。
リリース内容については以下の記事に記載されています。
https://github.com/ruby/ruby/blob/v2_5_0/NEWS
内容的には既存機能のパフォーマンス向上の他、新機能がいくつか追加されていたので、よく使いそうなものをいくつかピックアップして実際に試してみました。
インストール
brew を使用している場合は、以下のコマンドで ruby-build をアップデートしましょう。
$ brew upgrade ruby-build
$ rbenv install -l # インストール可能なバージョンに 2.5.0 があるか確認
# もし表示されない場合は ruby-build を再インストールしましょう
# $ brew reinstall ruby-build --HEAD
# インストール(オプションでドキュメントなしにすると早いです)
$ CONFIGURE_OPTS="--disable-install-rdoc" rbenv install 2.5.0
$ rbenv local 2.5.0
$ ruby -v # 2.5.0 になっている確認
pp が標準でロードされるように
デバッグ出力時にきれいに表示してくれる pp ライブラリが require なしで使用できるようになりました。
class User
def initialize(id:, name:)
@id = id
@name = name
end
end
user1 = User.new(id: 1, name: '田中')
user2 = User.new(id: 2, name: '鈴木')
users = [user1, user2]
pp users
=>
[#<User:0x00007fcd7889fba0 @id=1, @name="田中">,
#<User:0x00007fcd7889f830 @id=2, @name="鈴木">]
Hash#slice
Rails で実装されていた Hashクラスの slice メソッドが Ruby にも実装されました。Hash の特定のキーのみを取得したい場合に使用します。
hash = {id: 1, name: '田中'}
hash.slice(:id)
=> {:id=>1}
Enumerable の any?/all?/none?/one? でパターンオブジェクトが使用できるように
pp ['a', '1', '2'].all? /\d/ # => false
pp ['a', '1', '2'].any? /\d/ # => true
pp ['a', '1', '2'].none? /\d/ # => false
pp ['a', '1', '2'].one? /\d/ # => false
配列のメソッドに append/prepend が追加
従来の push/unshift のエイリアスです。
[1].append(2) # => [1, 2]
[1].prepend(2) # => [2, 1]
round/floor/ceil/truncate で Integer の場合は Float 変換しないように
10.round(2) # => 10
# 今まで
10.round(2) # => 10.0
SecureRandom.alphanumeric
英数字のみのランダムな文字列を生成します。
require 'securerandom'
SecureRandom.alphanumeric # => "1NGvMsx9z6MBSPr2"
yield_self
レシーバをブロックの引数に与え、ブロック内の評価値を返します。
10.yield_self { |num| num * 2 } # => 20