Parklife ist eine Ruby-Bibliothek zum Rendern einer Rack-App (Rails/Sinatra/usw.) auf einer statischen Site, damit sie von Netlify, Now, GitHub Pages, S3 oder einem anderen statischen Server bereitgestellt werden kann.
Fügen Sie Parklife zur Gemfile Ihrer Anwendung hinzu und führen Sie die Bundle-Installation aus.
gem 'parklife'
Generieren Sie nun eine Parkfile-Konfigurationsdatei und ein Build-Skript. Fügen Sie einige Rails- oder Sinatra-spezifische Einstellungen hinzu, indem Sie --rails
oder --sinatra
übergeben, erstellen Sie einen GitHub Actions-Workflow, um Ihren Parklife-Build zu generieren, und übertragen Sie ihn auf GitHub Pages, indem Sie --github-pages
übergeben.
$ bundle exec parklife init
Parklife wird mit einer Datei namens Parkfile
im Stammverzeichnis Ihres Projekts konfiguriert. Hier ist ein Beispiel für Parkfile
für eine imaginäre Rails-App:
# 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
Das Auflisten der in der oben genannten Parklife-Anwendung enthaltenen Routen mit parklife routes
würde Folgendes ergeben:
$ bundle exec parklife routes
/ crawl=true
/feed.atom
/sitemap.xml
/easter_egg crawl=true
/404.html
Jetzt können Sie parklife build
ausführen, das alle Routen abruft und im build
-Verzeichnis speichert, sodass sie als statische Site bereitgestellt werden können. Die Überprüfung des Build-Verzeichnisses könnte folgendermaßen aussehen:
$ 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 kennt keine Assets (Bilder, CSS usw.), daher müssen Sie diese wahrscheinlich auch generieren und in das Build-Verzeichnis kopieren. Sehen Sie sich das vollständige Build-Skript des Rails-Beispiels an, um zu erfahren, wie Sie dies tun können.
Schauen Sie sich die Arbeitsbeispiele für Rails, Rack und Sinatra in diesem Repository an.
Manchmal müssen Sie auf die vollständige URL eines Links verweisen – beispielsweise für einen Feed oder die URL eines sozialen Tags. Sie können Parklife anweisen, seine Scheinanfragen mit einem bestimmten Protokoll/Host zu stellen, indem Sie dessen base
so festlegen, dass Rails *_url
Helfer auf den richtigen Host verweisen:
Parklife . application . config . base = 'https://foo.example.com'
Die Basis-URL kann auch zur Build-Zeit übergeben werden, wodurch die Parkfile-Einstellung überschrieben wird:
$ bundle exec parklife build --base https://benpickles.github.io/parklife
index.html
deaktivieren) Standardmäßig speichert Parklife Dateien in einer index.html
Datei, die in einem Verzeichnis mit demselben Namen wie der Pfad verschachtelt ist – die Route /my/nested/route
wird also in /my/nested/route/index.html
gespeichert. Dadurch soll sichergestellt werden, dass Links innerhalb der App ohne Änderungen funktionieren, sodass jeder statische Server den Build leichter hosten kann.
Es ist jedoch möglich, dies zu deaktivieren, sodass /my/nested/route
in /my/nested/route.html
gespeichert wird. Auf diese Weise können Sie nachgestellte URLs ohne Schrägstriche mit GitHub Pages oder mit Netlify bereitstellen, indem Sie deren Funktion „Pretty URLs“ oder eine benutzerdefinierte Nginx-Konfiguration verwenden.
Parklife . application . config . nested_index = false
Das Build-Verzeichnis sollte nicht existieren und wird vor jedem Build zerstört und neu erstellt. Standardmäßig ist build
.
Parklife . application . config . build_dir = 'my/build/dir'
Wenn Parklife beim Abrufen einer Route auf eine 404-Antwort stößt, löst es standardmäßig eine Ausnahme aus (die Einstellung :error
“) und stoppt den Build. Weitere Werte sind:
:warn
– eine Nachricht an stderr
ausgeben, die Antwort speichern und mit der Verarbeitung fortfahren.:skip
– ignoriert die Antwort stillschweigend, speichert sie nicht und setzt die Verarbeitung fort. Parklife . application . config . on_404 = :warn
Wenn Sie nicht die Rails-Konfiguration verwenden, müssen Sie diese selbst definieren, siehe Beispiele.
Parklife . application . config . app
Das Juwel ist als Open Source unter den Bedingungen der MIT-Lizenz verfügbar.
Von jedem, der in den Codebasen, Issue-Trackern, Chatrooms und Mailinglisten des Parklife-Projekts interagiert, wird erwartet, dass er den Verhaltenskodex befolgt.