рельсы 3.1 ресурсы страницы обслуживания - PullRequest
1 голос
/ 14 сентября 2011

Как мне получить доступ к ресурсам на странице обслуживания в rails 3.1 с включенным конвейером активов?

При активированном конвейере активов все активы имеют хэш в имени файла.Тем не менее, страницы обслуживания - это обычный HTML, а rails / passenger обходится конфигурацией apache, поэтому нет способа сгенерировать правильные пути к ресурсам.

Мне нужен мой application.css и файл изображения.Хорошо, если они старые.

Я могу вспомнить несколько клуджей, но они все хромают:

  • В каждом развертывании сделайте символическую ссылку на нужные мне ресурсыуниверсальное имя, которое я использую в файле обслуживания.
  • Сделайте мою страницу обслуживания динамической, сгенерируйте ее и выведите куда-нибудь разметку, а затем измените сценарий моего развертывания обслуживания "*".

Ответы [ 3 ]

1 голос
/ 12 октября 2012

Для любого удобства я принял решение Ричарда в своем проекте и создал простой скрипт 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>
1 голос
/ 18 октября 2012

Если вы находитесь на Heroku, есть дополнение под названием Trackman. Вы можете связать все свои активы, и он развернет ваши страницы и ресурсы на S3. Вам практически нечего кодировать. Вы можете использовать утилиты внутри самоцвета, чтобы сделать разработчика просто куском.

http://www.trackman -addon.com

1 голос
/ 25 сентября 2011

Если вы хотите избежать символической ссылки или динамической (erb) страницы, используйте статический шаблон и измените его во время развертывания.

  1. Сначала создайте шаблон страницы обслуживания.

  2. Во время развертывания прочитайте файл mainfest.yml, созданный в процессе прекомпиляции.

  3. Прочитайте в шаблоне страницы обслуживания.*

  4. Замените все файлы, указанные в шаблоне, на хешированную версию из манифеста.

  5. Запишите измененный шаблон в файловую систему.

...