0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】Active Storageで動画投稿した5分後に再生されなくなった時の解決方法

Posted at

事象

こちらの記事を参考にActive Storageの動画アップロードと再生ができるアプリ(rails version: 6.1)を作成したところ、
最初はアップロードした動画が再生できるが、5分くらい時間が経つと動画再生できなくなった。

動画ファイルを取得しに行こうとした時にエラーになっているようだった。

原因

↑こちらの記事にあるように
Active Storageでは有効期限付きの一時的なURLを返していて、5分経つとURLが変わってしまう。

本来であれば
/rails/active_storage/blobs/redirect/~~~~~ (※参考のサイトを参照)
でblobに問い合わせし、最新のURLを問い合わせの都度レスポンスしてもらえるはずだが、
キャッシュの影響でこれに問い合わせせず、古いURL(期限が切れてる)を取りに行こうとするのが原因らしい。

解決方法

先ほどの記事にもあったが、6.1からは永続的なURLが設定出来るようになり、
これによりURLが変わる事なく常に同じになる(EC2に対するEIPのみたいに)。
やり方はconfig/storage.ymlpublic: true を記述する。

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>
  public: true

これによりblobへの問い合わせをskipしてもURLは変わらないので、
5分経っても動画ファイルが取得できる。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?