Parklife adalah perpustakaan Ruby untuk merender aplikasi Rack (Rails/Sinatra/dll) ke situs statis sehingga dapat dilayani oleh Netlify, Now, GitHub Pages, S3, atau server statis lainnya.
Tambahkan Parklife ke Gemfile aplikasi Anda dan jalankan instalasi bundel.
gem 'parklife' Sekarang buat file konfigurasi Parkfile dan buat skrip. Sertakan beberapa pengaturan khusus Rails atau Sinatra dengan meneruskan --rails atau --sinatra , buat alur kerja GitHub Actions untuk menghasilkan build Parklife Anda dan dorong ke Halaman GitHub dengan meneruskan --github-pages .
$ bundle exec parklife init
Parklife dikonfigurasi dengan file bernama Parkfile di root proyek Anda, berikut ini contoh Parkfile untuk aplikasi Rails imajiner:
# 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 Mencantumkan rute yang termasuk dalam aplikasi Parklife di atas dengan parklife routes akan menghasilkan keluaran sebagai berikut:
$ bundle exec parklife routes
/ crawl=true
/feed.atom
/sitemap.xml
/easter_egg crawl=true
/404.html
Sekarang Anda dapat menjalankan parklife build yang akan mengambil semua rute dan menyimpannya ke direktori build yang siap disajikan sebagai situs statis. Memeriksa direktori build mungkin terlihat seperti ini:
$ 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 tidak mengetahui tentang aset (gambar, CSS, dll) jadi Anda mungkin juga perlu membuatnya dan menyalinnya ke direktori build, lihat skrip build lengkap contoh Rails untuk mengetahui cara melakukan ini.
Lihatlah contoh kerja Rails, Rack dan Sinatra dalam repositori ini.
Terkadang Anda perlu menunjuk ke URL lengkap tautan - mungkin untuk feed atau URL tag sosial. Anda dapat memberitahu Parklife untuk membuat permintaan tiruannya dengan protokol/host tertentu dengan mengatur base sehingga pembantu Rails *_url akan menunjuk ke host yang benar:
Parklife . application . config . base = 'https://foo.example.com'URL dasar juga dapat diteruskan pada waktu pembuatan yang akan menggantikan pengaturan Parkfile:
$ bundle exec parklife build --base https://benpickles.github.io/parklife
index.html ) Secara default, Parklife menyimpan file dalam file index.html yang bersarang di direktori dengan nama yang sama dengan jalurnya - sehingga rute /my/nested/route disimpan di /my/nested/route/index.html . Hal ini untuk memastikan link dalam aplikasi berfungsi tanpa modifikasi sehingga memudahkan server statis mana pun untuk menghosting build.
Namun, Anda dapat mematikannya sehingga /my/nested/route disimpan di /my/nested/route.html . Hal ini memungkinkan Anda untuk menyajikan URL tanpa garis miring dengan Halaman GitHub atau dengan Netlify dengan menggunakan fitur URL Cantik atau dengan beberapa konfigurasi nginx khusus.
Parklife . application . config . nested_index = false Direktori build tidak boleh ada dan dimusnahkan serta dibuat ulang sebelum setiap build. Default untuk build .
Parklife . application . config . build_dir = 'my/build/dir' Secara default, jika Parklife menemukan respons 404 saat mengambil rute, hal ini akan memunculkan pengecualian (pengaturan :error ) dan menghentikan pembangunan. Nilai lainnya adalah:
:warn - keluaran pesan ke stderr , simpan responsnya, dan lanjutkan pemrosesan.:skip - diam-diam mengabaikan dan tidak menyimpan respons, dan melanjutkan pemrosesan. Parklife . application . config . on_404 = :warnJika Anda tidak menggunakan konfigurasi Rails, Anda harus mendefinisikannya sendiri, lihat contohnya.
Parklife . application . config . app Permata ini tersedia sebagai sumber terbuka berdasarkan ketentuan Lisensi MIT.
Setiap orang yang berinteraksi dalam basis kode, pelacak masalah, ruang obrolan, dan milis proyek Parklife diharapkan untuk mengikuti kode etik.