Ruby2.3を触ってみる


こんにちはの村上です。
TECHSCORE Advent Calendar 2015 の22日目の記事です。

今月にいよいよRuby2.3がリリースされます。たぶん。。。おそらく。。。

そして、先日(12/11)にRuby 2.3.0-preview2 がリリースされました。
なんで、Ruby 2.3.0-preview2をインストールしてさっそく触ってみましょう。

インストール

まずはインストールですが、rvmを使用しているんでそれでのインストール方法を紹介します。

rvmを最新にして一覧を見てみると

まだここには出てないようです。

直接サーバー(http://ftp.ruby-lang.org/pub/ruby/2.3/)を見てみると存在するので、
インストールはできそうです。

すると

おおインストールできましたね。
では早速さわってみましょう。

positive? negative?

Ruby2.3で追加されるメソッドで簡単なものがこれ
数字が正か負かを判断してくれるメソッドです。

こういう数値の判断で符号の向きを逆にしてしまうことがあるので、少し便利かも。

ぼっちオペレータ

safe navigation operator &. (またの名をぼっちオペレータ) が導入されました。
簡単に言うとnilでもエラーでませんよ。ってやつです。

ってな具合です。

でも

とぼっちオペレータを付けてもnil以外のオブジェクトでメソッドがない場合はNoMethodErrorのようですね。
ActiveSupportのtryではなくtry!に近いのかな?
ちなみに

と出てるのはRuby2.3からdid_you_mean gem がバンドルされたからです。
NoMethodErrorの時に他の候補を表示してくれます。

それにしてもぼっちオペレータwww

ふかーーーい階層にいる値を取得する

深い階層にあるハッシュの値、配列の値を一気に取得できるHash#dig、Array#digが追加されます。

ハッシュの方を例で

ちょっと書き方が簡単になっただけ?と思いきや

nilになった場合にも落ちない!!
いちいちnilチェックしなくていいので便利です。

Ruby2.3 + Rails4.2

他にも追加されている機能やメソッドがありますが、ここではこの辺にしてRuby2.3でRails4.2のプロジェクトを動かしてみましょう。

ここではRuby2.2で作られたRailsプロジェクトをRuby2.3にして再構築、つまりRuby2.2 ⇒ Ruby2.3の移行ということでやります。
対象プロジェクトのディレクトリで

を実行します。
vendor以下が「bundle/ruby/2.3.0」となってます。

次にアプリサーバー(unicorn)を動作させて動きをみてみると特に問題なく動作してました。

ちなみにこのプロジェクトで使っているGemは

  • 画像アップロード paperclip
  • 検索機能 ransack
  • ページング kaminari

などがあり、問題なく動いていました。
互換性は問題ないように思います。

12月25日にリリース予定になっているので、次の開発からはRuby2.3が使えそうです。

参考:https://www.ruby-lang.org/ja/news/2015/12/11/ruby-2-3-0-preview2-released/


Advent Calendar 2015の連載記事

  1. TECHSCORE Advent Calendar 2015
  2. Redshift と PostgreSQL に同時に JDBC 接続する
  3. Lombok で Spice up your Java!
  4. 画像を指定するだけ!非デザイナーでも簡単にそれっぽい配色ができるツールを作ってみた
  5. 新卒文系エンジニアの記録:配属半年間の失敗を振り返ってみた
  6. 非同期処理のすすめ
  7. ioDrive2の導入で支える、そのIOPS - 導入検討編.
  8. GoでパイプラインからSlackに通知する
  9. fuse でオレオレファイルシステムを作ってみた (Haskell で)
  10. Erlang はじめました
  11. ちょっと地味なビルドとリリースの話 (レガシーシステム改革、はじめの一歩)
  12. Java8 最速 boolean[] to Stream 選手権
  13. Google Apps の Directory API にてWebブラウザを介さずに認証する
  14. 風データをビジュアルに表現する
  15. マイクロフレームワーク「Ninja」を使ってみる
  16. 赤ちゃんvimmerからよちよちvimmerにクラスチェンジを果たすためのTips
  17. PostgreSQL FDW を作ってSQLでログ検索してみた
  18. Goで偽名ジェネレータを作りました
  19. 書き込み中に削除されたファイルを救出する
  20. 運用情報更新のススメ
  21. ちゃんと読んでくれましたか?
  22. Presto コネクターを実装する 第三回
  23. Ruby2.3を触ってみる
  24. Git 困ったときのtips集
  25. 5分で読む入門編:Java 8 ラムダ式 コレクション編(2)リストの検索
  26. CloudFront (+ S3) + JWPLAYER で様々なデバイスのブラウザから動画をストリーミング再生する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です