Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

開発・テスト環境において、ActiveStorageのストレージサービスへのパブリックアクセスを許可し、ファイルのURLが取得の度に変わらないように修正 #7346

Conversation

junohm410
Copy link
Contributor

@junohm410 junohm410 commented Feb 9, 2024

Issue

概要

ActiveStorageには「パブリックアクセス」という機能があり、使用しているストレージサービスにユーザーが直接アクセスすることを許可できます。

  • 許可の場合: ストレージサービス上のファイルを参照するために生成される画像URLは常に同一になる
  • 不許可の場合: 期限付きのURLが都度生成されるため、毎回異なる署名が入り、常に異なるURLになる

https://railsguides.jp/active_storage_overview.html#%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97

本PR提出時点で、bootcampアプリの設定は下記のようになっています。

  • 本番環境: パブリックアクセス許可
  • 開発・テスト環境: 設定なし(不許可)

この違いにより、開発環境においてUser#avatar_urlなどで取得される画像URLが毎回異なり、API経由の取得値をキャッシュできない問題が起きました。

上記の挙動について本番環境のものと合わせるため、開発・テスト環境でもパブリックアクセスを許可するのが、本PRの内容です。

※詳細は下のIssueコメントにまとめております。
#7225 (comment)

変更確認方法

  1. chore/allow-users-public-access-for-disk-service-in-development-and-test-environmentsをローカルに取り込む
  2. foreman start -f Procfile.devでサーバーを立ち上げる。
  3. ユーザーアイコン画像を持つユーザーのプロフィールページにアクセスする(例: komagata http://localhost:3000/users/459775584 )。
  4. アイコン画像を右クリック -> 「画像アドレスをコピー」で取得したアドレスをメモする(下のスクショ参照、ブラウザにより方法は異なるかもですが、画像のURLを取得できればOKです)。
  5. プロフィールページを再読み込みする。
  6. 4を行う。
  7. 4と6で取得したアドレスが同じであることを確認する。

image

変更前の7の結果

プロフィールページの再読み込みのたびに、画像のURLが異なるものになります。
(4の結果をfirst_url、6の結果をsecond_urlとして検証)

❯ irb
irb(main):001> first_url = 'http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDVG9JYTJWNVNTSWhiV0kx
YzI5bk16VnBPR1F3YUdFME1YSjZZM1ppZFhNMmVXcG9Od1k2QmtWVU9oQmthWE53YjNOcGRHbHZia2tpUTJsdWJHbHVaVHNnWm1sc1pXNWhiV1U5SW10dmJXRm5ZWFJoTG5C
dVp5STdJR1pwYkdWdVlXMWxLajFWVkVZdE9DY25hMjl0WVdkaGRHRXVjRzVuQmpzR1ZEb1JZMjl1ZEdWdWRGOTBlWEJsU1NJT2FXMWhaMlV2Y0c1bkJqc0dWRG9SYzJWeWRt
bGpaVjl1WVcxbE9ncHNiMk5oYkE9PSIsImV4cCI6IjIwMjQtMDItMTZUMDc6MDE6MTMuODcxWiIsInB1ciI6ImJsb2Jfa2V5In19--27d5646d727af2627049d4c4b024d5
80bb07dfba/komagata.png'
=> "http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDVG9JYTJWNVNTSWhiV0kxYzI5bk16VnBPR1F3YUd...
irb(main):002> second_url = 'http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDVG9JYTJWNVNTSWhiV0k
xYzI5bk16VnBPR1F3YUdFME1YSjZZM1ppZFhNMmVXcG9Od1k2QmtWVU9oQmthWE53YjNOcGRHbHZia2tpUTJsdWJHbHVaVHNnWm1sc1pXNWhiV1U5SW10dmJXRm5ZWFJoTG5
CdVp5STdJR1pwYkdWdVlXMWxLajFWVkVZdE9DY25hMjl0WVdkaGRHRXVjRzVuQmpzR1ZEb1JZMjl1ZEdWdWRGOTBlWEJsU1NJT2FXMWhaMlV2Y0c1bkJqc0dWRG9SYzJWeWR
tbGpaVjl1WVcxbE9ncHNiMk5oYkE9PSIsImV4cCI6IjIwMjQtMDItMTZUMDc6MDE6NDMuNDIzWiIsInB1ciI6ImJsb2Jfa2V5In19--abda2d628f95b0b91267dc30e1b4e
3a212f4d082/komagata.png'
=> "http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDVG9JYTJWNVNTSWhiV0kxYzI5bk16VnBPR1F3YUd...
irb(main):003> first_url == second_url
=> false

変更後の7の結果

プロフィールページの再読み込みを行なっても、画像のURLは同じになります。

❯ irb
irb(main):001> first_url = 'http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDVG9JYTJWNVNTSWhiV0kx
YzI5bk16VnBPR1F3YUdFME1YSjZZM1ppZFhNMmVXcG9Od1k2QmtWVU9oQmthWE53YjNOcGRHbHZia2tpUTJsdWJHbHVaVHNnWm1sc1pXNWhiV1U5SW10dmJXRm5ZWFJoTG5C
dVp5STdJR1pwYkdWdVlXMWxLajFWVkVZdE9DY25hMjl0WVdkaGRHRXVjRzVuQmpzR1ZEb1JZMjl1ZEdWdWRGOTBlWEJsU1NJT2FXMWhaMlV2Y0c1bkJqc0dWRG9SYzJWeWRt
bGpaVjl1WVcxbE9ncHNiMk5oYkE9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9rZXkifX0=--43b3f740fc0c9473d425cbf5c7243f58db784629/komagata.png'
=> "http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDVG9JYTJWNVNTSWhiV0kxYzI5bk16VnBPR1F3YUd...
irb(main):002> second_url = 'http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDVG9JYTJWNVNTSWhiV0k
xYzI5bk16VnBPR1F3YUdFME1YSjZZM1ppZFhNMmVXcG9Od1k2QmtWVU9oQmthWE53YjNOcGRHbHZia2tpUTJsdWJHbHVaVHNnWm1sc1pXNWhiV1U5SW10dmJXRm5ZWFJoTG5
CdVp5STdJR1pwYkdWdVlXMWxLajFWVkVZdE9DY25hMjl0WVdkaGRHRXVjRzVuQmpzR1ZEb1JZMjl1ZEdWdWRGOTBlWEJsU1NJT2FXMWhaMlV2Y0c1bkJqc0dWRG9SYzJWeWR
tbGpaVjl1WVcxbE9ncHNiMk5oYkE9PSIsImV4cCI6bnVsbCwicHVyIjoiYmxvYl9rZXkifX0=--43b3f740fc0c9473d425cbf5c7243f58db784629/komagata.png'
=> "http://localhost:3000/rails/active_storage/disk/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaDdDVG9JYTJWNVNTSWhiV0kxYzI5bk16VnBPR1F3YUd...
irb(main):003> first_url == second_url
=> true

Screenshot

内部的な設定の変更のみのため、本修正による画面上の変更はありません。

@junohm410 junohm410 changed the title kしhsユーザーアイコンの画像のURLが表示の度に変わるので、変わらないようにしたい。 開発・テスト環境において、ActiveStorageのファイルのURLが表示の度に変わらないように修正 Feb 9, 2024
@junohm410 junohm410 self-assigned this Feb 9, 2024
@junohm410 junohm410 changed the title 開発・テスト環境において、ActiveStorageのファイルのURLが表示の度に変わらないように修正 開発・テスト環境において、ActiveStorageのストレージサービスへのパブリックアクセスを許可し、ファイルのURLが取得の度に変わらないように修正 Feb 9, 2024
@junohm410 junohm410 marked this pull request as ready for review February 9, 2024 08:29
@junohm410
Copy link
Contributor Author

@naokinaokiboo
お疲れ様です🙏よろしければ、本件のレビューをお願いしたく思います🙇‍♂️
急ぎませんので、ご都合良きタイミングで確認いただけると幸いです。
(お忙しいなどご対応が厳しければおっしゃっていただければと思います😃)
お手数をおかけいたしますが、何卒よろしくお願いいたします🙏

@naokinaokiboo
Copy link
Contributor

@junohm410
お疲れ様です。レビューの件、承知しました!😄
着手が週明けになってしまいますので、その点だけご了承ください🙏

@naokinaokiboo
Copy link
Contributor

@junohm410
大変お待たせして申し訳ありません🙏
問題ないと思いますので私からはApproveとさせて頂きます!

@junohm410
Copy link
Contributor Author

@naokinaokiboo
お疲れ様です🙏
レビューいただきありがとうございました!🙇‍♂️

@komagata
チームメンバーによるレビューが終わりましたので、レビューのほどよろしくお願いいたします🙏

@junohm410 junohm410 requested a review from komagata February 15, 2024 11:56
Copy link
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させて頂きました。OKです〜🙆‍♂️

@komagata komagata merged commit 89fac16 into main Feb 15, 2024
15 checks passed
@komagata komagata deleted the chore/allow-users-public-access-for-disk-service-in-development-and-test-environments branch February 15, 2024 16:58
@github-actions github-actions bot mentioned this pull request Feb 15, 2024
19 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants