Rails5.1.6 を 5.2.0 へアップデートする

Rails5.2の新機能

ざっくりとですが、Rails 5.2の新機能のポイントをまとめてみました。リリースノートはこちら

Active Storage
Active Storageはファイルアップロードの新機能で、Amazon S3、Google Cloud Storage、Microsoft Azure Storage等のクラウドストレージへのアップロードが標準で利用でき、ダイレクトアップロード、ミラーリング機能によって複数のクラウドストレージのあいだでファイルを同期することもできます。

Redis Cache Store
config.cache_store = :redis_cache_storeとすることで、Redisをキャッシュとして使えるようになります。

HTTP/2 Early Hints
Early Hintsは、Webサーバーにリクエストが完了する前にヘッダで必要なJavaScriptやスタイルシート(assets)のURLを伝えることができ、より高速なページの表示を可能にします。

Bootsnap
Railsアプリケーションの起動時間を短縮するライブラリです。ドキュメントによると起動時間が半分程度になるとのことです。

Content Security Policy
Webブラウザに対してどのページからならリソースをダウンロードして良いかを設定することで、セキュリティを管理するHTTPの仕様です。これによってクロスサイトスクリプティング(XSS)といった脆弱性からWebサイトを守ることができます。

Credentials
これまで、複数存在していたRailsアプリケーション内の機密情報(config/secrets.ymlや、SECRET_BASE_KEY)を1つのファイル(config/credentials.yml.enc)内に暗号化して格納できるようになりました。

Railsアップデート

事前にRubyのバージョンを2.5以上にする必要があります。

Gemfile

アップデートコマンドを実行。

上書き確認が表示されます。
以下を参考に、Y で上書き、 n でスキップ、 d で事前の差分確認などで進めてください。

私の場合の、上書き確認されたファイルと新規作成されたファイルなど載せておきます。

gem ‘bootsnap’の追加

config/boot.rbにrequire ‘bootsnap/setup’と追加されたように、Rails 5.2から bootsnap を利用して起動するようになりました。

Gemfile

Active Storageの設定

ここからはActive Storageを導入する場合です。アップデートコマンドでconfig/environmentsにはconfig.active_storage.service = :localと追加されています。

Gemfile

config/application.rb に以下を追加して rails active_storage:install を実行します。

config/application.rb

すると、次のマイグレーションファイルが作られます。見てみると、active_storage_blobsとactive_storage_attachmentsという2つのテーブルが生成されています。Blobはファイル名、ファイルの種類、バイト数、誤り検出符号などのメタデータを保持し、Attachmentは、BlobオブジェクトとActive Recordオブジェクトを紐付けるための中間テーブルです。

これでアップデート完了しました!


投稿者:

Shuji Tenra

「仕事に特化したQ&AサイトJobQuery【ジョブクエリ】」の開発/運営をしています。https://jobquery.jp