Find All Broken Package Terms and Conditions (T&C) and Cover Images
This script checks active restaurants and reports packages that have broken T&C image URLs or cover image URLs.
Prerequisites
- Rails environment loaded (
rails c) faradaygem installed- Network access to package image hosts
How to run
- Open Rails console:
rails c
- Run script A for T&C images.
- Run script B for cover images.
Note: For large datasets, run in batches to avoid timeouts/rate limits.
Output format
Each result row includes:
restaurant_id,restaurant_namepackage_type,package_id,package_name- broken image URL field
edit_package_urlfor quick admin fix
A. Find all broken package T&C images
BASE_URL = 'https://hungryhub.com'.freeze
data = []
restaurants = Restaurant.active.not_expired.includes(:translations, :restaurant_packages).to_a
urls_to_check = []
restaurants.each do |restaurant|
restaurant.restaurant_packages.each do |rp|
package = rp.package
next if package.nil? || package.tnc_image_url.blank?
urls_to_check << { restaurant: restaurant, package: package }
end
end
urls_to_check.each_with_index do |entry, index|
restaurant = entry[:restaurant]
package = entry[:package]
response = Faraday.get(package.tnc_image_url)
if response.status != 200
data << {
restaurant_id: restaurant.id,
restaurant_name: restaurant.name,
package_type: package.type,
package_id: package.id,
package_name: package.name,
package_tnc_image_url: package.tnc_image_url,
edit_package_url: BASE_URL + Rails.application.routes.url_helpers.send(
"edit_admin_packages_#{package.route_name}_path".to_sym, package.id
)
}.to_json
end
puts "Processed #{index + 1}/#{urls_to_check.size}"
end
puts data.presence || 'No broken tnc image found'
B. Find all broken package cover images
BASE_URL = 'https://hungryhub.com'.freeze
data = []
restaurants = Restaurant.active.not_expired.includes(:translations, :restaurant_packages).to_a
urls_to_check = []
restaurants.each do |restaurant|
restaurant.restaurant_packages.each do |rp|
package = rp.package
next if package.nil? || package.cover_image_url.blank?
urls_to_check << { restaurant: restaurant, package: package }
end
end
urls_to_check.each_with_index do |entry, index|
restaurant = entry[:restaurant]
package = entry[:package]
response = Faraday.get(package.cover_image_url)
if response.status != 200
data << {
restaurant_id: restaurant.id,
restaurant_name: restaurant.name,
package_type: package.type,
package_id: package.id,
package_name: package.name,
package_cover_image_url: package.cover_image_url,
edit_package_url: BASE_URL + Rails.application.routes.url_helpers.send(
"edit_admin_packages_#{package.route_name}_path".to_sym, package.id
)
}.to_json
end
puts "Processed #{index + 1}/#{urls_to_check.size}"
end
puts data.presence || 'No broken cover image found'
Next steps after detection
- Open each
edit_package_url. - Replace broken URL with valid image URL.
- Re-run scripts to verify cleanup.