Utvecklingsmiljö för Callistas hemsida

Introduktion

mise är en programvara som används för att sätta upp en utvecklingsmiljö. Man använder sig av konfigurationsfil(er), mise.toml, mise.local.toml, mise/config.toml, etc. för att beskriva miljön.

När man sedan stegar sig in i en katalog som innehåller en konfigurationsfil så aktiveras miljön. När miljön är aktiverad så har man tillgång till de programvaror (tools) som är definierade och man har även tillgång till eventuellt beskrivna uppgifter (tasks).

Kom igång

1. Installera mise

curl https://mise.run | sh

2. Aktivera mise

Aktivera mise i ditt shell så att det aktiveras automatiskt per katalog. Lägg till detta i ditt shells init-fil (t.ex ~/.zshrc):

eval "$(mise activate zsh)"

och starta sedan om din terminal (eller source ~/.zshrc).

En sak som kan göras samtidigt är att kommentera ut eller ta bort raden rbenv init i ~/.zshrc om den finns där. Använd följande uttryck för att se om kommandot finns

rg "rbenv init" ~ --hidden -g '!.git' -g '!node_modules' -g '!Library' 2>/dev/null

3. Trust och installation

cd /path/to/callistaenterprise.github.io
mise trust
mise install

mise trust körs en gång per projekt - mise exekverar inte konfiguration som den inte litar på. mise install laddar ned och bygger sedan Ruby med den version som har specificerats i mise.toml.

4. Verifiera

Kontrollera att mise är aktivt

mise current
ruby -v          # should print 3.3.4

5. Starta upp

mise run setup
mise run serve

Troubleshooting

Om man märker att den inkrementella bygget kommer att misslyckas och inte genererar dina ändringar korrekt kan man behöva bryta Jekyll-processen och köra ett Clean-kommando. Kommandot rensar alla cacher och förgenererat material. Detta kan t.ex. hända om man lägger till och tar bort filer.

mise run clean

Ruby vs. gem compatability

Det finns ingen mise-inbyggd funktion för att kontrollera Ruby–gem-kompatibilitet. mise hanterar bara vilken Ruby-binär som är aktiv; själva kompatibilitetskontrollen är egentligen en fråga för Bundler/RubyGems, eftersom det är där gem-specifika required_ruby_version-krav finns. Men man kan få en tillförlitlig kontroll på två sätt, och det är värt att kombinera dem.

1. Kontrollera först dokumentationen hos GitHub innan du ändrar något i mise.toml:

https://pages.github.com/versions/

Den sidan listar den exakta Ruby-version som GitHub Pages egna byggservrar använder just nu. Det är det mest korrekta svaret på frågan “vad bör jag ens försöka med?”, även om kontrollen är manuell och inte något man kan skripta.

2. Kontrollera lokalt mot den Ruby-version som mise har aktiverat

Kontrollera lokalt mot den Ruby-version som mise har aktiverat, utan att faktiskt installera alla gem — använd mise run check-ruby i stället för mise run setup:

mise run check-ruby

mise run check-ruby kör bundle lock kör exakt samma beroendeupplösning som Bundler gör före installation: den kontrollerar varje gems required_ruby_version, github-pages egna krav och transitiva beroenden som exempelvis nokogiri. Kommandot generar endast filen Gemfile.lock; den laddar inte ner eller bygger något.

Om Ruby-versionen som mise aktiverat är inkompatibel med något i beroendeträdet får man ett tydligt fel. Exempelvis nokogiri-X requires ruby version >= Y.