Parklife เป็นไลบรารี Ruby ที่จะเรนเดอร์แอป Rack (Rails/Sinatra/อื่นๆ) ไปยังไซต์แบบคงที่ เพื่อให้สามารถให้บริการโดย Netlify, Now, GitHub Pages, S3 หรือเซิร์ฟเวอร์แบบคงที่อื่นๆ
เพิ่ม Parklife ให้กับ Gemfile ของแอปพลิเคชันของคุณ และรันการติดตั้งบันเดิล
gem 'parklife' ตอนนี้สร้างไฟล์การกำหนดค่า Parkfile และสร้างสคริปต์ รวมการตั้งค่าเฉพาะของ Rails หรือ Sinatra ไว้ด้วยการส่ง --rails หรือ --sinatra สร้างเวิร์กโฟลว์ GitHub Actions เพื่อสร้างบิลด์ Parklife ของคุณและพุชไปที่ GitHub Pages โดยการส่ง --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 ที่พร้อมที่จะทำหน้าที่เป็นไซต์คงที่ การตรวจสอบไดเร็กทอรี 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 ฯลฯ) ดังนั้นคุณอาจต้องสร้างสิ่งเหล่านั้นและคัดลอกไปยังไดเร็กทอรี build ดูสคริปต์การสร้างแบบเต็มของตัวอย่าง 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 Pages หรือ Netlify โดยใช้ฟีเจอร์ Pretty URL หรือด้วยการกำหนดค่า nginx แบบกำหนดเอง
Parklife . application . config . nested_index = false ไดเร็กทอรี build ไม่ควรมีอยู่และถูกทำลายและสร้างขึ้นใหม่ก่อนแต่ละ build ค่าเริ่มต้นใน 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 เครื่องมือติดตามปัญหา ห้องสนทนา และรายชื่อผู้รับจดหมาย จะต้องปฏิบัติตามหลักจรรยาบรรณ