Ruby on Rails 5.0系から5.1系へのアップデートに関するTipsです。
🐠 主な変更点
yarnのサポート
npmによるJavaScriptのライブラリをyarnで管理できます。これにより、npmで管理されたライブラリを気軽に利用できます。
bin/yarn install
でnpmのライブラリをインストールできます。
webpackのサポート(任意)
--webpack
オプションを付けると、webpackを使ってJSをコンパイルできます。
新規プロジェクトの場合は次のように--webpack
をつけると有効になります。
rails new プロジェクト名 --webpack |
既存プロジェクトに導入する場合はGemfile
に次のコードを追加してください。
em 'webpacker' |
そして次のコマンドを実行します。
bin/rails webpacker:install |
jQueryに依存しなくなった
RailsのJavaScript実装のjquery-ujs
がjQueryではなく、pure JavaScriptになり「rails-ujs」となるそうです。
インテグレーションが容易に
SystemTestCase
を使うことで、インテグレーションテストを実装しやすくなりました。
require 'application_system_test_case' |
標準で作成されるApplicationSystemTestCase
でCapybaraのドライバやブラウザ、画面解像度を設定できます。
require test_helper |
config/secrets.ymlを暗号化
config/secrets.ymlを次のコマンドで暗号化します。
bin/rails secrets:setup |
実行するとconfig/secrets.yml.key
(鍵)とconfig/secrets.yml.enc
(暗号化されたファイル)が生成されます。config/secrets.yml.key
は本番環境の環境変数RAILS_MASTER_KEY
に設定します。
Action Mailerにパラメータを渡せる
Action Mailerにパラメータを渡せるので、DRYに書きやすくなりました。
class InvitationsMailer < ApplicationMailer |
directed routes
routes.rb
に次のようなHelperを書くことができるようになりました。
direct :commentable do |model| |
resolved routes
routes.rb
に次のようなルーティングを記述できるようになりました。
resource :basket |
すると次のようにform
側を記述できます。
<%= form_for @basket do%=> |form| %> |
form_withメソッド
URLを直接指定する
<%= form_with url:%=> posts_path do |form| %> |
生成されるHTMLは次のようになります。
<form action=/posts method=post data-remote=true> |
モデルオブジェクトを渡す
<%= form_with model:%=> Post.first do |form| %> |
生成されるHTMLは次のようになります。
<form action=/posts/1 method=post data-remote=true> |
Time型もタイムゾーンを考慮
Datetime型だけでなく、Time型もタイムゾーンを考慮した実装に変わりました。
# DatetimeとTime型の両方でTimezoneをつける |
🎳 アップデートの手順
- Gemfileの
rails
バージョンを5.1にアップデート HashWithIndifferentAccess
は速度の問題があるため、ActiveSupport::HashWithIndifferentAccess
に移行config/secrets.yml
を使っている場合は、キーをシンボルで読み込むようにする
🎂 参考リンク
- Ruby on Rails 5.1 Release Notes
- A Guide for Upgrading Ruby on Rails
- Rails 5.1の変更点まとめ
- Rails 5.1 から time 型の列もタイムゾーン考慮するようになるとのこと