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 型の列もタイムゾーン考慮するようになるとのこと
