Chcel by som vytvoriť logiku do stránky Jekyll tak, že stránky určitého layout
budú mať svoje YAML overené, chyba budovania, ak chýbajú špecifické polia alebo majú nesprávny typ hodnoty atď.
Jedným riešením je písanie pluginu kludgy pre filter kvapalín, ktorý jednoducho prijme chybové hlásenie a vyvolá výnimku:
module Jekyll
module ExceptionFilter
def raise_error(msg)
bad_file = @context.registers[:page]["path"]
err_msg = "On #{bad_file}: #{msg}"
raise err_msg
end
end
end
Liquid::Template.register_filter(Jekyll::ExceptionFilter)
Potom v šablóne napríklad môžem zahrnúť toto:
{% unless page.necessary_field %}
{{ "You"re missing necessary_field" | raise_error }}
{% endunless %}
Takýto druh prác je dokončený.
Jeden problém, ktorý mám, je proces vytváraniaokamžite zastaví vyhľadanie jednej chyby. Rád by som bol schopný pokračovať v zostavovaní všetkých súborov .md v repo a zhromaždiť zoznam chýb na všetkých stránkach, ktoré sa budú zobrazovať na konci. Na základe dokumentov Jekyll, Myslel som si to liquid: error_mode: warn
v _config.yml
by to urobilo, ale nie.
odpovede:
2 pre odpoveď č. 1Môžete (ab) použiť generátor na kontrolu všetkých súborov pred budovaním. Tu je spôsob, ako to urobiť:
module MyModule
class WarningGenerator < Jekyll::Generator
def generate(site)
errors = Array.new
site.posts.docs.each do |p|
unless p.data["my_property"].any? {
errors = "On #{p.title}: My Property is missing"
}
end
errors.each do |error|
puts error
end
raise "There were errors"
end
end
end
Pozor, tento kód nie je testovaný :)
Bude prechádzať cez všetky vaše stránky, skontroluje konkrétnu vlastnosť, pridá správu do poľa, ak sa nenašla a neskôr nespustí chybu.