Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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)
  • faraday gem installed
  • Network access to package image hosts

How to run

  1. Open Rails console:
rails c
  1. Run script A for T&C images.
  2. 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_name
  • package_type, package_id, package_name
  • broken image URL field
  • edit_package_url for 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

  1. Open each edit_package_url.
  2. Replace broken URL with valid image URL.
  3. Re-run scripts to verify cleanup.