ActiveStorageのコピー

2023-08-12 rails

開発・運用共に ActiveStorage のデータをローカル(service: Disk)に持って動かしているプロジェクトがあります。

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

local_production:
  service: Disk
  root: /var/www/appname/shared/storage

storageフォルダの内容及びデータベースをダンプして開発環境に持ってきたのですが、何故か運用環境のパスを見に行ってしまい、画像を参照できない問題が発生しました。

irb(main)> User.first.picture.download
/usr/local/bundle/gems/activestorage-6.1.4.7/lib/active_storage/service/disk_service.rb:35:in `rescue in block in download': ActiveStorage::FileNotFoundError (ActiveStorage::FileNotFoundError)
/usr/local/bundle/gems/activestorage-6.1.4.7/lib/active_storage/service/disk_service.rb:33:in `binread': No such file or directory @ rb_sysopen - /var/www/appname/shared/storage/2a/2b/2a2bbmf2ejycqldxst0847qlk9wy (Errno::ENOENT)

運用環境と同じ位置で見えるようにシンボリックリンクを貼って対処していますが、ちょっと気になるのでメモとして残しておきます。