Active Job

Active Jobは非同期処理機能を提供するライブラリです。さまざまなバックエンド上で実行する非同期処理(メール送信、データ集計をしてCSVファイルを作成)を統一的に利用できます。時間がかかる処理を先にレスポンスをクライアントへ返しておき、バックグラウンドで処理を別途実行します。

Ruby on RailsのActiveJobとは? - Qiita

Active Jobを利用している機能:Action Mailer、Action Mailbox、Active Storage

Active Storage

以前はファイルアップロード機能を実装するときは、CarrierWaveなどのgemを使っていましたが、Rails 5.2からはActive Storageという公式のファイルアップロード機能が提供されています。

Active Storageの機能は主に2つのモデルで作られています。ActiveStorage::AttachmentActiveStorage::Blobです。どのモデルに紐づけられた画像もAttachmentとBlobを利用します。

ActiveStorage::Attachment:主となるモデルとActiveStorage::Blobの中間テーブル

ActiveStorage::Blob:アップロードファイルのメタ情報を管理するテーブル

$ bin/rails active_storage:installを実行するとこの二つのテーブルが作成されます。)

本番環境ではS3、GCS、AzureStorageなどのクラウドストレージにファイルをおきます。

Active Storageにはダイレクトアップロード機能も実装されています。application.jsファイルに下記の記述があります。これがダイレクトアップロード用のJavaScriptライブラリです。

require("@rails/activestorage").start()

そしてファイルを添付するフォーム(file_field)にdirect_upload: trueを追加するとsubmitボタンが押されると同時にストレージにファイルをダイレクトアップロードするようになります。複数のファイルを同時にアップロードしたいときはmultiple: trueというオプションも追加します。

Active Storageにはバリデーション用のヘルパーメソッドがありません。なので自分で実装するか、Active Storage Validationsというgemを利用する必要あります。