皆さんお疲れ様です。
久しぶりの更新になります。
なんと約2年ぶり・・・

2年も経つと、Railsの新しいバージョンがリリースされています。
なので、今回はRailsをバージョンアップしました。
その際、修正が必要だった点や気になった点を記録します。


前提


Ruby on Rails 7.0.8 → 8.0.2

バージョンを上げる方法も提供されているかと思いますが、今回は、Rails8のアプリを新規作成して、ファイルを移植する方法を取りました。

1.Turbo Drive の記述変更


Turbo Drive の書き方が変わっているようでした。

【旧】
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
【新】
<%= stylesheet_link_tag :app, "data-turbo-track": "reload" %>

違いはちょっとだけですが、生成されるCSS読み込み部が、下記の通り全く異なります。

【旧記述のままで生成されるCSS読み込み処理】
<link rel="stylesheet" href="/assets/application-8b441ae0.css" data-turbo-track="reload">

【新記述で生成されるCSS読み込み処理】
<link rel="stylesheet" href="/assets/actiontext-xxxxxxxx.css" data-turbo-track="reload">
<link rel="stylesheet" href="/assets/application-xxxxxxxx.css" data-turbo-track="reload">
<link rel="stylesheet" href="/assets/article-xxxxxxxx.css" data-turbo-track="reload">
<link rel="stylesheet" href="/assets/layout-xxxxxxxx.css" data-turbo-track="reload">
<link rel="stylesheet" href="/assets/style-xxxxxxxx.css" data-turbo-track="reload">

旧記述のままだと、application.css以外を読み込んでくれません。
application.cssにすべてのCSSを記述しているのでない限り、表示が崩れるでしょう。

2.ヘルスチェック機能


デフォルトで、ヘルスチェック機能が提供されるようになったらしい。

routes.rbに、以下のような記述が追加されていることで気が付きました。
get "up" => "rails/health#show", as: :rails_health_check

ヘルスチェック機能とは、サーバーの生存確認用インターフェースです。
監視システムやロードバランサーが、サーバーの稼働状況を確認するために使用します。
正常動作している場合は、レスポンスのステータスコード 200 を返し、それ以外は 500 を返します。

ヘルスチェック用のインターフェースを自分で作る必要が無いのはちょっとだけ便利ですね。

なお、ヘルスチェック用のページは真緑のなにもないページとなります。

3.production環境のDB


Production環境のDBを作成した際に、以下のようなDBスキーマが作成された。
appl_production
appl_production_cable
appl_production_cache
appl_production_queue

これは、Solid Trifecta という機能のためのテーブルです。
Solid Trifectahは、超ざっくり言えば、高速化のための技術です。

Solid cache、Solid cable、Solid queue の3つの機能からなっています。
それぞれ、Active Support のキャッシュ、Action Cable のアダプタ、Active Job 用のバックグラウンドワーカーとのこと。

以前から同様機能はサードパーティなどで存在していたようですが、Rails 8 からは標準で提供されるようになったようです。

まとめ


今回は、Railsを移植でバージョンアップしました。
結果的には、修正が必要だったのは、Turbo Drive の記述だけでとなりました。
使っている機能によっては、他にも修正は必要かもしれませんが、今回は割と簡単に移植できました。

皆さんの参考になればと思います。
ではまた。