Parklife est une bibliothèque Ruby permettant de restituer une application Rack (Rails/Sinatra/etc) sur un site statique afin qu'elle puisse être servie par Netlify, Now, GitHub Pages, S3 ou un autre serveur statique.
Ajoutez Parklife au Gemfile de votre application et exécutez l'installation du bundle.
gem 'parklife'
Générez maintenant un fichier de configuration Parkfile et créez un script. Incluez certains paramètres spécifiques à Rails ou Sinatra en passant --rails
ou --sinatra
, créez un workflow GitHub Actions pour générer votre build Parklife et transférez-le vers les pages GitHub en passant --github-pages
.
$ bundle exec parklife init
Parklife est configuré avec un fichier appelé Parkfile
à la racine de votre projet, voici un exemple Parkfile
pour une application Rails imaginaire :
# 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
La liste des itinéraires inclus dans l'application Parklife ci-dessus avec parklife routes
produirait ce qui suit :
$ bundle exec parklife routes
/ crawl=true
/feed.atom
/sitemap.xml
/easter_egg crawl=true
/404.html
Vous pouvez maintenant exécuter parklife build
qui récupérera toutes les routes et les enregistrera dans le répertoire build
prêt à être servi comme site statique. L'inspection du répertoire de construction pourrait ressembler à ceci :
$ 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 ne connaît pas les actifs (images, CSS, etc.), vous devrez donc probablement également les générer et les copier dans le répertoire de construction, consultez le script de construction complet de l'exemple Rails pour savoir comment procéder.
Jetez un œil aux exemples de travail Rails, Rack et Sinatra dans ce référentiel.
Parfois, vous devez pointer vers l’URL complète d’un lien – peut-être pour un flux ou une URL de balise sociale. Vous pouvez demander à Parklife de faire ses requêtes fictives avec un protocole/hôte particulier en définissant sa base
pour que les assistants Rails *_url
pointent vers le bon hôte :
Parklife . application . config . base = 'https://foo.example.com'
L'URL de base peut également être transmise au moment de la construction, ce qui remplacera le paramètre Parkfile :
$ bundle exec parklife build --base https://benpickles.github.io/parklife
index.html
imbriqué) Par défaut, Parklife stocke les fichiers dans un fichier index.html
imbriqué dans un répertoire portant le même nom que le chemin - donc la route /my/nested/route
est stockée dans /my/nested/route/index.html
. Il s'agit de garantir que les liens au sein de l'application fonctionnent sans modification, ce qui permet à tout serveur statique d'héberger plus facilement la version.
Cependant, il est possible de désactiver cette option pour que /my/nested/route
soit stocké dans /my/nested/route.html
. Cela vous permet de diffuser des URL de fin sans barre oblique avec les pages GitHub ou avec Netlify en utilisant leur fonctionnalité Pretty URLs ou avec une configuration nginx personnalisée.
Parklife . application . config . nested_index = false
Le répertoire de build ne devrait pas exister et est détruit et recréé avant chaque build. Par défaut, build
.
Parklife . application . config . build_dir = 'my/build/dir'
Par défaut, si Parklife rencontre une réponse 404 lors de la récupération d'un itinéraire, il déclenchera une exception (le paramètre :error
) et arrêtera la construction. Les autres valeurs sont :
:warn
- affiche un message sur stderr
, enregistre la réponse et continue le traitement.:skip
- ignore silencieusement et ne sauvegarde pas la réponse, et continue le traitement. Parklife . application . config . on_404 = :warn
Si vous n'utilisez pas la configuration Rails, vous devrez la définir vous-même, voir les exemples.
Parklife . application . config . app
La gemme est disponible en open source selon les termes de la licence MIT.
Toute personne interagissant dans les bases de code, les outils de suivi des problèmes, les salons de discussion et les listes de diffusion du projet Parklife doit suivre le code de conduite.