desc "Generates error pages" task generate_error_pages: :environment do # unless Rails.env.production? # puts "Skipping generate_error_pages page generation outside production" # next # end Rails.application.config.action_controller.perform_caching = false pages = { "error_pages/bad_request" => "400.html", "error_pages/unauthorized" => "401.html", "error_pages/payment_required" => "402.html", "error_pages/forbidden" => "403.html", "error_pages/not_found" => "404.html", "error_pages/method_not_allowed" => "405.html", "error_pages/not_acceptable" => "406.html", "error_pages/proxy_authentication_required" => "407.html", "error_pages/request_timeout" => "408.html", "error_pages/conflict" => "409.html", "error_pages/gone" => "410.html", "error_pages/length_required" => "411.html", "error_pages/precondition_failed" => "412.html", "error_pages/payload_too_large" => "413.html", "error_pages/uri_too_long" => "414.html", "error_pages/unsupported_media_type" => "415.html", "error_pages/range_not_satisfiable" => "416.html", "error_pages/expectation_failed" => "417.html", "error_pages/unprocessable_entity" => "422.html", "error_pages/locked" => "423.html", "error_pages/failed_dependency" => "424.html", "error_pages/upgrade_required" => "426.html", "error_pages/internal_server_error" => "500.html", "error_pages/not_implemented" => "501.html", "error_pages/bad_gateway" => "502.html", "error_pages/service_unavailable" => "503.html", "error_pages/gateway_timeout" => "504.html", "error_pages/http_version_not_supported" => "505.html", "error_pages/insufficient_storage" => "507.html", "error_pages/not_extended" => "510.html" } pages.each do |page, output| puts "Generating #{output}..." outpath = Rails.root.join("public", output) renderer = ApplicationController.renderer.new(http_host: ENV.fetch("APP_HOST") { "jwa11y.top" }, https: true) html = renderer.render(template: page, layout: "layouts/errors") if html.present? File.delete(outpath) if File.exist?(outpath) File.open(outpath, "w") do |f| f.write(html) end else puts "Error generating #{output}!" end end end