概要
ActiveStorage
でRspec
実行時に生成した画像ファイルをテスト終了後に自動で削除する方法をメモとして残しておきます。
Rails
でRspec
を用いてテストする際に画像を生成する場合があると思います。
その際に生成されたテスト用画像データは下記のようにconfig/storage.yml
に設定された保存先に保存されます。
test: # 'root'にテスト時に生成された画像を保存する場所を指定している
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
テストを行っていくとどんどんと保存先のストレージが生成された画像で圧迫されてしまいます。
しかし、ある設定をすることでテスト終了後はストレージをクリーンアップすることができます。
方法
spec/rails_helper.rb
RSpec.configure do |config|
config.after(:all) do
FileUtils.rm_rf(ActiveStorage::Blob.service.root) if Rails.env.test?
end
end
上記の設定をspec/rails_helper.rb
に記載すれば自動的に画像のクリーンアップが実行されます。
備考
minitest
でテストを行っている場合は下記ドキュメントに詳しく乗っていますので参照してください。