Parklife es una biblioteca Ruby para representar una aplicación Rack (Rails/Sinatra/etc.) en un sitio estático para que pueda ser atendida por Netlify, Now, GitHub Pages, S3 u otro servidor estático.
Agregue Parklife al Gemfile de su aplicación y ejecute la instalación del paquete.
gem 'parklife'
Ahora genere un archivo de configuración de Parkfile y cree un script. Incluya algunas configuraciones específicas de Rails o Sinatra pasando --rails
o --sinatra
, cree un flujo de trabajo de GitHub Actions para generar su compilación de Parklife y envíela a GitHub Pages pasando --github-pages
.
$ bundle exec parklife init
Parklife está configurado con un archivo llamado Parkfile
en la raíz de su proyecto; aquí hay un Parkfile
de ejemplo para una aplicación Rails imaginaria:
# 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
Enumerar las rutas incluidas en la aplicación Parklife anterior con parklife routes
generaría lo siguiente:
$ bundle exec parklife routes
/ crawl=true
/feed.atom
/sitemap.xml
/easter_egg crawl=true
/404.html
Ahora puede ejecutar parklife build
, que buscará todas las rutas y las guardará en el directorio build
, listas para funcionar como un sitio estático. La inspección del directorio de compilación podría verse así:
$ 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 no conoce los activos (imágenes, CSS, etc.), por lo que probablemente también necesite generarlos y copiarlos en el directorio de compilación; consulte el script de compilación completo del ejemplo de Rails para saber cómo puede hacerlo.
Eche un vistazo a los ejemplos de trabajo de Rails, Rack y Sinatra en este repositorio.
A veces es necesario señalar la URL completa de un enlace, tal vez para un feed o la URL de una etiqueta social. Puede decirle a Parklife que realice sus solicitudes simuladas con un protocolo/host en particular configurando su base
para que los ayudantes de Rails *_url
apunten al host correcto:
Parklife . application . config . base = 'https://foo.example.com'
La URL base también se puede pasar en el momento de la compilación, lo que anulará la configuración de Parkfile:
$ bundle exec parklife build --base https://benpickles.github.io/parklife
index.html
anidado) De forma predeterminada, Parklife almacena archivos en un archivo index.html
anidado en un directorio con el mismo nombre que la ruta, por lo que la ruta /my/nested/route
se almacena en /my/nested/route/index.html
. Esto es para garantizar que los enlaces dentro de la aplicación funcionen sin modificaciones, lo que facilita que cualquier servidor estático aloje la compilación.
Sin embargo, es posible desactivar esto para que /my/nested/route
se almacene en /my/nested/route.html
. Esto le permite ofrecer URL finales sin barras con GitHub Pages o con Netlify utilizando su función Pretty URL o con alguna configuración personalizada de nginx.
Parklife . application . config . nested_index = false
El directorio de compilación no debería existir y se destruye y se vuelve a crear antes de cada compilación. Valores predeterminados para build
.
Parklife . application . config . build_dir = 'my/build/dir'
De forma predeterminada, si Parklife encuentra una respuesta 404 al buscar una ruta, generará una excepción (la configuración :error
) y detendrá la compilación. Otros valores son:
:warn
: envía un mensaje a stderr
, guarda la respuesta y continúa procesando.:skip
: ignora silenciosamente y no guarda la respuesta, y continúa procesando. Parklife . application . config . on_404 = :warn
Si no está utilizando la configuración de Rails, deberá definirla usted mismo; consulte los ejemplos.
Parklife . application . config . app
La gema está disponible como código abierto según los términos de la licencia MIT.
Se espera que todos los que interactúan en las bases de código, rastreadores de problemas, salas de chat y listas de correo del proyecto Parklife sigan el código de conducta.