Экспорт статических HTML + CSS + JS из Rails

При создании статических приложений я часто запускаю новое приложение Rails. Это упрощает некоторые вещи, такие как компиляция (Coffeescript, SCSS), минимизация (JS, CSS) и ограничения браузера (страница выполняется с localhost 3000, поэтому внешние источники могут быть загружены и т.д.).

В конце концов, я хочу экспортировать приложение, чтобы его можно было скачать онлайн. Тогда мне просто нужен HTML + CSS + JS. Можно пойти и вырвать файлы вручную, но, вероятно, для этого проще.

Итак: есть инструмент, который хранит скомпилированные, сведенные к минимуму файлы HTML + CSS + JS из приложения Rails?

Ответ 1

Если вы просто хотите в основном скопировать веб-сайт, поскольку он будет отображаться с помощью рельсов (и нет необходимости в выполнении кода на стороне сервера), вы можете просто зеркально отобразить рельсы-сайт с помощью

wget --page-requisites --convert-links http://URL-to-Start

Однако это будет загружать только те файлы, на которые ссылаются URL-адреса записи, поэтому вам может потребоваться выполнить их на всех под-URL-адресах индивидуально.

Источник: Загрузите рабочую локальную копию веб-страницы

Ответ 2

Согласитесь с Screenmutt. Я пробовал пару из упомянутых, но имел наибольший успех:

http://middlemanapp.com/

Делает в значительной степени все, о чем вы просите, и позволяете экспортировать в статический HTML.

установить:

gem install middleman

создать проект:

middleman init my_new_project (or even better with template --template=html5)

запустить на локальном сервере для живых изменений:

bundle exec middleman

статический код дампа:

bundle exec middleman build

Ответ 3

Возможно, вы можете "очистить" HTML от локального хоста, обслуживающего его?

Кажется, есть некоторые инструменты для загрузки сайтов в целом... Возможно, вы можете ограничить их загрузкой ресурсов только с localhost:3000.

Ответ 4

UPDATE: здесь еще один учебник, который может помочь Использовать Rails 3.1 для статических сайтов

Это не обычное использование. Вы могли бы извлечь все статические страницы, вручную кэшируя все.

Я бы порекомендовал взглянуть на некоторые alternatives.

Мне жаль, что это не очень хороший ответ, но, честно говоря... Вы используете Rails для чего-то, чего он никогда не собирался делать. Есть гораздо лучшие способы создания статических сайтов.

Кроме того, статический сайт не является "приложением".:)

Ответ 5

Все, что вам нужно сделать, это переключиться на режим Rails-производства локально, чтобы активы были объединены и минимизированы. Тогда вам нужно только просмотреть источник HTML, CSS и JS. Это займет всего несколько секунд.

Итак, шаги

  • config.assets.compress = true в development.rb
  • просмотр локального приложения
  • просмотреть исходный код, скопировать и вставить в файл index.html
  • нажмите на сжатый источник формы CSS и JS и сохраните те, которые относятся к вашему index.html, убедившись, что они правильно связаны.

Ответ 6

Вы можете использовать Wget (как уже упоминалось). Я бы пошел с:

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent http://www.yourdomain.com

Yo также может использовать Httrack.

Убедитесь, что при установке Httrack вы исключаете все внешние веб-сайты со сценариями, чтобы не загружать f.e. Js файлы Google Analytics или скрипты Adsense или Facebook. В Httrack вы исключаете его в настройках с помощью:

-*.googlesyndication.com/* -*.facebook.net/* -*.google-analytics.com/*

После того, как вы закончите, вам все равно нужно переписать все ссылки, потому что они укажут на... /some -page/index.html Вам нужно... /some -page/. Это решает Динамический для статического Script.

Ответ 7

Вы не должны обслуживать их с рельсов или делать все, что связывает ваши статические файлы, которые будут обслуживаться с рельсов. В один прекрасный день вы можете принять решение об обслуживании своего приложения из CDN.

JS

Один большой совет - посмотреть на использование AMD (определение асинхронного модуля), которое позволит вам указать ваши зависимости JS файла. Затем вы можете использовать require.js и r.js(инструмент, который сканирует и компилирует ваши зависимости на вашем этапе прекомпиляции). Это будет работать для вашего JS.

CSS

Для CSS вы можете использовать sass или less. Вы должны добавить 1 файл в конце дня на своей странице, но процесс компиляции должен объединить ваши файлы CSS. Еще раз это можно сделать на этапе предварительной компиляции.

CDN

Там есть драгоценные камни, которые показывают ваши активы и передают их чему-то вроде S3, этот ответ и тому подобное, как это помогло бы: Есть ли способ для активов конвейера активов s3 при нажатии на герою?; однако это не обязательно при первом запуске.