release assets

This commit is contained in:
2026-08-02 18:26:29 +02:00
parent 9db8ff189c
commit c630278e42
18 changed files with 223 additions and 53 deletions
+33
View File
@@ -0,0 +1,33 @@
namespace :release_assets do
desc "Verify that legacy Release path columns match release_assets rows"
task verify: :environment do
mapping = {
"cartridge_path" => "cartridge",
"source_path" => "source",
"html_folder_path" => "html",
"docs_folder_path" => "docs"
}
ok = true
mapping.each do |column, kind|
legacy = Release.unscoped.where.not(column => [ nil, "" ])
assets = ReleaseAsset.unscoped.where(kind: kind)
missing = legacy.where.not(id: assets.select(:release_id))
mismatched = legacy
.joins("INNER JOIN release_assets ra ON ra.release_id = releases.id AND ra.kind = '#{kind}'")
.where("ra.path <> releases.#{column}")
puts format("%-18s legacy: %4d asset: %4d missing: %d mismatch: %d",
column, legacy.count, assets.count, missing.count, mismatched.count)
missing.limit(10).each { |r| puts " MISSING release ##{r.id} (#{column}=#{r.public_send(column)})" }
mismatched.limit(10).each { |r| puts " MISMATCH release ##{r.id} (#{column}=#{r.public_send(column)})" }
ok &&= missing.count.zero? && mismatched.count.zero?
end
if ok
puts "OK: every legacy path column is mirrored in release_assets."
else
abort "FAIL: legacy path columns and release_assets differ."
end
end
end