Parklife هي مكتبة روبي لتقديم تطبيق Rack (Rails/Sinatra/etc) إلى موقع ثابت بحيث يمكن تقديمه بواسطة Netlify أو Now أو GitHub Pages أو S3 أو خادم ثابت آخر.
أضف Parklife إلى Gemfile الخاص بالتطبيق الخاص بك وقم بتشغيل تثبيت الحزمة.
gem 'parklife'
الآن قم بإنشاء ملف تكوين Parkfile وقم ببناء البرنامج النصي. قم بتضمين بعض الإعدادات الخاصة بـ Rails أو Sinatra عن طريق تمرير --rails
أو --sinatra
، وقم بإنشاء سير عمل GitHub Actions لإنشاء إصدار Parklife الخاص بك ودفعه إلى صفحات GitHub عن طريق تمرير --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
الجاهز للعرض كموقع ثابت. قد يبدو فحص دليل البناء كما يلي:
$ 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 وما إلى ذلك) لذا من المحتمل أيضًا أن تحتاج إلى إنشاء هذه الأصول ونسخها إلى دليل البناء، راجع البرنامج النصي الكامل للبناء لمثال 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 أو مع Netlify باستخدام ميزة عناوين URL الجميلة الخاصة بها أو مع بعض إعدادات nginx المخصصة.
Parklife . application . config . nested_index = false
يجب ألا يكون دليل البناء موجودًا ويتم إتلافه وإعادة إنشائه قبل كل بناء. افتراضيات 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 ومتتبعي المشكلات وغرف الدردشة والقوائم البريدية قواعد السلوك.