active_storage_dashboard 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37a9ff508b9a3249ca7bda98dbfca0f7aa2629e35168958b0eca00d82d2cd27f
4
- data.tar.gz: 6eac31451e7615696babb0f89de47d31f881d6ab392d9600907ed26b5733574e
3
+ metadata.gz: ed1a1e341dedaaab67801dd73a0b76df9449aca4ca18973563e2ed7dc6dda253
4
+ data.tar.gz: 7a9aefffa3a6de909c51d0b6722d9d0850606ec50fbd06b05ce60ca96d122828
5
5
  SHA512:
6
- metadata.gz: 86378de269473f43fdc742d95f2dce3197f22ddc4726a5e9e91f56ae4a77a05df3fa2094ac0789d20734edbc99235050db81ffecddce74117422113ab43f13df
7
- data.tar.gz: 466081bfa71b093cfbed38febfb5810a020cf8a40922f6098e41848a0a90a0bc6d6968302a0b381dc8b163851f6034a5bf0bf13a39c43b54dda64bd296c78ee7
6
+ metadata.gz: 3cd3148b29e82dfef918761d4cc12e888da4735bfd0a3c9a197fb61faef8c0462e2dae3b5346c18c8734a8b7756629cec8580013c04bf74abc1fff09f4dd5dea
7
+ data.tar.gz: e3705b654f6ab6805fb7cdd03988df975e9af080cc372796045b836cd00fd0d25ce38293f8d90873a895b60bd6336cc398349388470539bc95eb29d82e1b4046
@@ -0,0 +1,9 @@
1
+ module ActiveStorageDashboard
2
+ class Analyzer
3
+ def self.call
4
+ ActiveStorage::Blob.find_each do |blob|
5
+ blob.analyze unless blob.analyzed?
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ module ActiveStorageDashboard
2
+ class OrphanPurger
3
+ def self.call
4
+ scope = ActiveStorage::Blob.left_outer_joins(:attachments)
5
+ .where(active_storage_attachments: { id: nil })
6
+
7
+ scope.find_each do |blob|
8
+ blob.purge
9
+ puts "Purged blob #{blob.id}"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ module ActiveStorageDashboard
2
+ class VariantRegenerator
3
+ def self.call
4
+ unless defined?(ActiveStorage::VariantRecord)
5
+ puts "ActiveStorage::VariantRecord not found (Rails < 7.1). Skipping."
6
+ return
7
+ end
8
+
9
+ ActiveStorage::VariantRecord.find_each do |variant|
10
+ begin
11
+ variant.image.representation(variant.variation).processed
12
+ rescue => e
13
+ warn "Failed variant #{variant.id}: #{e.message}"
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,8 +1,18 @@
1
1
  # frozen_string_literal: true
2
+ require "rails/railtie"
2
3
 
3
4
  require "active_storage_dashboard/version"
4
5
  require "active_storage_dashboard/engine"
5
6
 
7
+ require "active_storage_dashboard/orphan_purger"
8
+ require "active_storage_dashboard/analyzer"
9
+ require "active_storage_dashboard/variant_regenerator"
10
+
6
11
  module ActiveStorageDashboard
7
- # Your code goes here...
8
- end
12
+ class Railtie < Rails::Railtie
13
+ rake_tasks do
14
+ load File.expand_path("tasks/active_storage_dashboard_tasks.rake", __dir__)
15
+ end
16
+ end
17
+ end
18
+
@@ -1,6 +1,21 @@
1
- # frozen_string_literal: true
1
+ namespace :active_storage do
2
+ namespace :dashboard do
3
+ desc "Purge blobs that have no attachments"
4
+ task purge_orphans: :environment do
5
+ ActiveStorageDashboard::OrphanPurger.call
6
+ end
2
7
 
3
- # desc "Explaining what the task does"
4
- # task :active_storage_dashboard do
5
- # # Task goes here
6
- # end
8
+ desc "Re-analyze blobs that are not yet analyzed"
9
+ task reanalyze: :environment do
10
+ ActiveStorageDashboard::Analyzer.call
11
+ end
12
+
13
+ desc "Recreate missing or outdated variants"
14
+ task regenerate_variants: :environment do
15
+ ActiveStorageDashboard::VariantRegenerator.call
16
+ end
17
+
18
+ desc "Run all maintenance tasks"
19
+ task all: [:purge_orphans, :reanalyze, :regenerate_variants]
20
+ end
21
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_storage_dashboard
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giovanni Panasiti
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-17 00:00:00.000000000 Z
10
+ date: 2025-05-22 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
@@ -49,7 +49,10 @@ files:
49
49
  - app/views/layouts/active_storage_dashboard/application.html.erb
50
50
  - config/routes.rb
51
51
  - lib/active_storage_dashboard.rb
52
+ - lib/active_storage_dashboard/analyzer.rb
52
53
  - lib/active_storage_dashboard/engine.rb
54
+ - lib/active_storage_dashboard/orphan_purger.rb
55
+ - lib/active_storage_dashboard/variant_regenerator.rb
53
56
  - lib/active_storage_dashboard/version.rb
54
57
  - lib/tasks/active_storage_dashboard_tasks.rake
55
58
  homepage: https://github.com/giovapanasiti/active_storage_dashboard