Find All Broken Package T&C and Cover Images
A. Find All Broken Package T&C Images
The script
BASE_URL = 'https://hungryhub.com'.freeze
data = []
restaurants = Restaurant.active.not_expired.includes(:translations, :restaurant_packages).to_a
# Collect all URLs to check in a single batch
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
# Perform HTTP requests in batches
urls_to_check.each_with_index do |entry, index|
restaurant = entry[:restaurant]
package = entry[:package]
puts "Checking restaurant: #{restaurant.name}, package: #{package.name}"
response = Faraday.get(package.tnc_image_url)
if response.status != 200
json_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
data << json_data
end
puts "Processed #{index + 1} of #{urls_to_check.size} URLs"
end
puts data.presence || 'No broken tnc image found'
B. Find All Broken Package Cover Images
The script
BASE_URL = 'https://hungryhub.com'.freeze
data = []
restaurants = Restaurant.active.not_expired.includes(:translations, :restaurant_packages).to_a
# Collect all URLs to check in a single batch
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
# Perform HTTP requests in batches
urls_to_check.each_with_index do |entry, index|
restaurant = entry[:restaurant]
package = entry[:package]
puts "Checking restaurant: #{restaurant.name}, package: #{package.name}"
response = Faraday.get(package.cover_image_url)
if response.status != 200
json_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
data << json_data
end
puts "Processed #{index + 1} of #{urls_to_check.size} URLs"
end
puts data.presence || 'No broken cover image found'