2
1

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 3 years have passed since last update.

デプロイする度にアップロードした画像が表示されなくなる問題への対処|Active Storage

Posted at

Railsアプリケーションで、デプロイする度にアップロードした画像が表示されなくなる事象が発生したので、その時の解決策を残します。
Capistrano3で自動デプロイをしていて、画像のアップデートにはminimagickを使用。

画像のアップロードに関することなので、Active Storageの設定を修正します。
共有フォルダに画像ファイルを保存し、デプロイ時にデータが上書きされないようにします。

やることは2つだけです。
①Active Storageの画像の保存先を変更し、
②共有フォルダへシンボリックリンクを貼る。

##開発環境
・Rails 5.2.3

・Ruby 2.5.1
・ConoHa VPS

・CentOS 7.6

・Capistrano3
・Nginx
・Unicorn

##①Active Storageの画像保存先の変更

Active Storageの画像の保存先はstorage.ymlで設定します。

保存先がrootディレクトリ直下のstorageだったのを”public/storage”に変更します。

config/storage.yml
local:
  service: Disk
  root: <%= Rails.root.join("public/storage") %>  # 元は "storage"

これでアップデート先が、/var/www/hoge_app/current/storageから、
/var/www/hoge_app/current/public/storageになりました。

その結果、共有フォルダ(sharedフォルダ)にも画像ファイルが保存されます。
共有フォルダにファイルを入れておくことで、デプロイ時にファイルの上書きを避けることができます。

##②共有フォルダへシンボリックリンクを貼る
capistranoでデプロイをしているので、capistranoの設定を修正します。

画像ファイルが保存されている共有フォルダへ、デプロイ時にシンボリックリンクを貼る設定をします。

config/deproy.rb
 append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "vendor/bundle", "public/system", "public/storage" # “public/storage"を加える

これでデプロイ時に/var/www/hoge_app/shared/public/storageへのシンボリックリンクが貼られます。

これで設定は完了です。
この設定にしてからアップロードした画像は、デプロイ後もきちんと表示されました。

##参考
https://railsguides.jp/active_storage_overview.html
https://lab.unicast.ne.jp/2015/07/02/capistrano3%E3%81%A7%E3%81%AFshared_children%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8Flinked_dir%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82/
https://qiita.com/okjnag/items/ee55fd0f214466a4d3c8
https://qiita.com/hmmrjn/items/7cc5e5348755c517458a#active-storage-%E3%81%A8%E3%81%AF

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?