Parklife — это библиотека Ruby для рендеринга приложения Rack (Rails/Sinatra/etc) на статическом сайте, чтобы его можно было обслуживать Netlify, Now, GitHub Pages, S3 или другим статическим сервером.
Добавьте Parklife в Gemfile вашего приложения и запустите установку пакета.
gem 'parklife'
Теперь создайте файл конфигурации Parkfile и создайте скрипт. Включите некоторые настройки, специфичные для Rails или Sinatra, передав --rails
или --sinatra
, создайте рабочий процесс GitHub Actions для создания сборки Parklife и отправьте его на страницы GitHub, передав --github-pages
.
$ bundle exec parklife init
Parklife настроен с использованием файла Parkfile
в корне вашего проекта. Вот пример Parkfile
для воображаемого приложения Rails:
# Load Parklife's Rails-specific integration which, among other things, allows
# you to use URL helpers within the `routes` block below.
require 'parklife/rails'
# Load the Rails application, this gives you full access to the application's
# environment from this file - using models for example.
require_relative 'config/environment'
Parkfile . application . routes do
# Start from the homepage and crawl all links.
root crawl : true
# Some extra paths that aren't discovered while crawling.
get feed_path ( format : :atom )
get sitemap_path ( format : :xml )
# A couple more hidden pages.
get easter_egg_path , crawl : true
# Services typically allow a custom 404 page.
get '404.html'
end
Перечисление маршрутов, включенных в вышеуказанное приложение Parklife, с parklife routes
приведет к следующему:
$ bundle exec parklife routes
/ crawl=true
/feed.atom
/sitemap.xml
/easter_egg crawl=true
/404.html
Теперь вы можете запустить parklife build
, которая получит все маршруты и сохранит их в каталоге build
готовом к использованию в качестве статического сайта. Проверка каталога сборки может выглядеть так:
$ find build -type f
build/404.html
build/about/index.html
build/blog/index.html
build/blog/2019/03/07/developers-developers-developers/index.html
build/blog/2019/04/21/modern-life-is-rubbish/index.html
build/blog/2019/05/15/introducing-parklife/index.html
build/easter_egg/index.html
build/easter_egg/surprise/index.html
build/index.html
build/location/index.html
build/feed.atom
build/sitemap.xml
Parklife не знает об ресурсах (изображениях, CSS и т. д.), поэтому вам, вероятно, также потребуется сгенерировать их и скопировать в каталог сборки. См. полный сценарий сборки примера Rails, чтобы узнать, как это можно сделать.
Взгляните на рабочие примеры Rails, Rack и Sinatra в этом репозитории.
Иногда вам нужно указать полный URL-адрес ссылки — например, для URL-адреса канала или социального тега. Вы можете указать Parklife, чтобы он выполнял фиктивные запросы с определенным протоколом/хостом, установив его base
так, чтобы помощники Rails *_url
указывали на правильный хост:
Parklife . application . config . base = 'https://foo.example.com'
Базовый URL-адрес также можно передать во время сборки, что переопределит настройку Parkfile:
$ bundle exec parklife build --base https://benpickles.github.io/parklife
index.html
) По умолчанию Parklife хранит файлы в файле index.html
, вложенном в каталог с тем же именем, что и путь, поэтому маршрут /my/nested/route
хранится в /my/nested/route/index.html
. Это необходимо для того, чтобы ссылки внутри приложения работали без изменений, что упрощает размещение сборки на любом статическом сервере.
Однако это можно отключить, чтобы /my/nested/route
сохранялся в /my/nested/route.html
. Это позволяет вам обслуживать конечные URL-адреса без косой черты с помощью страниц GitHub или Netlify, используя их функцию «Pretty URL-адреса» или некоторую пользовательскую конфигурацию nginx.
Parklife . application . config . nested_index = false
Каталог сборки не должен существовать, он уничтожается и создается заново перед каждой сборкой. По умолчанию для build
.
Parklife . application . config . build_dir = 'my/build/dir'
По умолчанию, если Parklife обнаруживает ответ 404 при получении маршрута, он вызывает исключение (параметр :error
) и останавливает сборку. Другие значения:
:warn
— вывести сообщение в stderr
, сохранить ответ и продолжить обработку.:skip
- молча игнорировать и не сохранять ответ, а продолжить обработку. Parklife . application . config . on_404 = :warn
Если вы не используете конфигурацию Rails, вам нужно будет определить ее самостоятельно, см. примеры.
Parklife . application . config . app
Гем доступен с открытым исходным кодом в соответствии с условиями лицензии MIT.
Ожидается, что все, кто взаимодействует с кодовыми базами проекта Parklife, системами отслеживания проблем, чатами и списками рассылки, будут следовать кодексу поведения.