これは何?
railsのファイル管理機能で、ActiveStorage vs Carrierwave論争はよく聞く。
Ruby on Rails】ActiveStorageの概要とその利点、弱点
ActiveStorage vs CarrierWave
画像管理をActiveStorageからCarrierWaveへ乗り換えた話
Catch allルーティングとActive Storage
プレビュー機能の実装にはCarrierwaveのキャッシュ機能が必要だったので、備忘録として記述する。
要件
開発アプリケーション概要
- 管理サイトとエンドユーザ画面のあるwebアプリケーション
- 管理サイトでコンテンツの編集を行い、エンドユーザサイトで閲覧することができる
開発機能概要
- 管理サイトのコンテンツ編集画面において、プレビューを行いたい
- 画面の左半分が入力部分、右半分をプレビュー部分とし、エンドユーザサイトと同じ見た目で入力をリアルタイム判定したい
実装方法
- エンドユーザサイトのviewをコンポーネント化し、管理サイトの編集画面の右半分に埋め込む
- 左側の入力部分のform内の値が更新されるたびにformの内容をpreview更新用エンドポイントに送信してturboの描画内容を返却させ、その返却値でまるっと右側のエリアを更新
この際、ActiveStorageではキャッシュ機能が存在していないため、未保存の画像を呼び出すことはできない。
故に入力部分で画像を選択しても、プレビュー部分には表示されない。
一方でCarierwaveにはキャッシュ機能が存在しているので、未保存であっても選択した画像をプレビュー部分に表示することができる。