30 lines
947 B
Ruby
30 lines
947 B
Ruby
|
|
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/not_found" => "404.html",
|
||
|
|
"error_pages/unprocessable_content" => "422.html",
|
||
|
|
"error_pages/internal_server_error" => "500.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
|