おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

ginza.rb 第33回で Rails 5 の新機能について学んだ

3/15は ginza.rb の33回目のミートアップでした。

Ginza.rb 第33回 もうすぐやってくる!Rails 5を見ておこう - Ginza.rb | Doorkeeper

前回のミートアップ時に、きっと Rails 5.0 がリリースされているだろうと思い Rails 5.0 をテーマとして設定しましたが、見事に期待が外れましたね><

未完成のリリースノートを読みつつ、主にメジャーな機能について内容を確認していきました。ざっとメモ書きを載せます。何か間違っている点などありましたら教えていただけると嬉しいです!

Ruby on Rails 5.0 Release Notes — Ruby on Rails Guides

ActionCable

  • ご存知 websocket 用
  • pubsubサーバとして postgres と redis に対応している
  • Basecamp のチャットサーバとして使われているので、一応実績がある
    • しかしどれくらいのサーバ台数でどのくらいのクライアント数をさばいているのだろう。気になる
  • puma, unicorn, passenger などのサーバで使える
  • 内部で thread 使っているので、仮に unicorn を使っていても ActionCable を使うのであれば thread safe なコードが求められる

Rails API

Rails::API について発表した - おもしろwebサービス開発日記

Active Record Attributes API

Rails 5のActive Record attributes APIについて | 日々雑記

Test Runner

Rails 標準の test ツールが便利になりました

  • 結果に色がつく
  • ファイル、行を指定して実行、fail-fast や defer-output など、RSpec の便利機能の取り込み

Exclusive use of rails CLI over Rake

  • これまで rails で何か実行する時は、rails コマンドもしくは rake コマンドでしたが、rails に統一されました
  • rails db:migrate みたいな
  • 実態は rake コマンドを叩いているだけ
  • rake も引き続き使える

Sprockets 3

  • リリースノートには 3 って書いてあるけど多分 4
  • source map
    • development で assets 結合しないと、ファイル数が多い時に遅いけど、結合するとエラー時にどこがエラーなのかわかりにくいのを解消
    • 結合しても、エラー時にどこがエラーなのかわかる
  • es6 サポート
    • babel が依存関係に入った
  • manifest.js
    • これまで、最終的にコンパイルされるファイルは Rails の config で指定していたけれど、それを js 上で指定できるようになった
    • ちょっと疎になった

Turbolinks 5

Ruby 2.2.2+ required

読んで字のごとく。Ruby 2.2.2 以降に対応

Notable Change

時間が余ったので、細かい変更も見ていました。以下気になった変更点

  • bin/rails restart コマンドが追加された
    • 実態は tmp/restart.txt を更新しているだけ
    • puma 2 系は tmp/restart.txt に対応してなかった(はず)だけど、3.0 で対応された
  • bin/rails initializers コマンドが追加された
    • initializer を読み込む順番で表示してくれる
    • べんりでは
  • bin/rails dev:cache コマンドが追加された
    • development 環境で cache のオンオフができる
    • 実態は tmp/caching-dev.txt を作ったり消したりしてるだけ
    • caching-dev.txt の有無で cache の設定を上書きしている
  • bin/update スクリプトが追加された
    • bin/setup の update 版
    • セットアップと同様、アップデートもコマンド一発でできるようにするのが Rails Way ってことなのかな
  • http_cache_forever というのが controller 用のメソッドとして追加された
    • 読んで字のごとく
  • config.force_ssl にオプションが追加
    • 一回 force_ssl な設定が追加されてしまったブラウザを、リセットするのが楽になった
    • HSTS Preload 用の設定も入った

以上

まだまだ読めていない変更点があるので、次回は続きを読んでいく予定です。