Для любого удобства я принял решение Ричарда в своем проекте и создал простой скрипт ruby, который заменяет ссылки на ресурсы на страницах статических ошибок HTML / обслуживания. Это преднамеренное, а не грабли, так что это как можно быстрее. В любом случае он не имеет зависимости от Rails, кроме того, что его нужно запускать из корневого каталога rails.
#!/usr/bin/env ruby
require 'yaml'
GLOBS = %w(public/errors_source/*.html)
MANIFEST = "public/assets/manifest.yml"
manifest = YAML::load(File.open(MANIFEST))
GLOBS.each do |glob|
Dir.glob(glob).each do |file|
next unless File.file?(file)
contents = File.read(file)
manifest.each do |asset, compiled_asset|
contents.gsub!(asset, "/assets/#{compiled_asset}")
end
File.open(file.gsub('errors_source/',''), 'w') do |outfile|
outfile.write(contents)
end
end
end
Сценарий ожидает, что статические HTML-страницы ошибок / обслуживания будут находиться в каталоге errors_source
и скопирует их (с заменой ресурсов для их хэшированных версий) в корневой каталог rails.
Пример страницы технического обслуживания может выглядеть следующим образом (обратите внимание на ссылку на ресурс CSS и изображение логотипа - эти ресурсы просто делятся с основным кодом rails):
<html>
<head>
...
<link href="application.css" media="screen" rel="stylesheet" type="text/css"/>
</head>
<body>
...
<a href="/"><img src="logo.png" width="161" height="61"/></a>
...
</body>
</html>