geplaatst door: Shmoo

geblokkeerd

Is zoiets mogelijk a.h.v de Hostfile?

Mijn Bonjour-adressen zijn:
mac.local   (Mac mini)
macbook.local   (MacBook Pro)

Bonjour is een geweldige verbinding om een site mee te testen op al je devices die in het WiFi netwerk zitten. Probleem is alleen dat als je software installeert dat een site genereert dat je vaak maar 1 localhost url kunt toekennen omdat er maar één config file is.

In een ideale wereld zou je dingen doen als:
host: mac.local

Maar als je dan aan het project werkt op je MacBook Pro dan werkt dit adres niet omdat dit niet het Bonjour-adres is van de MacBook Pro.

Stel je zou het voor elkaar krijgen om in de Hostfile op de mini een url als: 0.0.0.0 ---> redirecten naar: mac.local.
Daarna doe ik op de MacBook Pro hetzelfde in de Hostfile maar dan ---> macbook.local.

Op die manier zou mijn site gewoon urls genereren in de vorm van 0.0.0.0 maar als je er dan op drukt eindigen ze toch op het Bonjour path.

👨‍💻 🌎
antw: Hostfile (localhost) naar Bonjour redirecten
7 juni 2019 - 17:06    reactie #1
geplaatst door: jaco123
Misschien mis ik iets hoor, maar wat is dan precies het voordeel van je site via Bonjour benaderen?

Je kunt toch gewoon voor lokale testen het ip-adres van de computer waar je de site op hebt draaien gebruiken ?
Of als je DNS draait in je thuisnetwerk gewoon de naam gebruiken? Dus http://macmini  of http://macbookpro of zo?
antw: Hostfile (localhost) naar Bonjour redirecten
9 juni 2019 - 13:42    reactie #2
geplaatst door: Shmoo

geblokkeerd

Toegankelijkheid vooral.

Een Bonjour-adres is heel toegankelijk vanaf elk ander device in het WiFi netwerk, zolang de computer waar je het adres van gebruikt maar aanstaat.

Dit is op mijn Mac mini.


Als ik nu website bouw en ik laat deze genereren op het Bonjour-adres mac.local dan hoef ik op mijn iPhone of iPad maar naar mac.local te surfen en dan heb ik de site neus. Zelfs Live Refresh werkt dan gewoon. Als ik op mijn Mac mini op CMD + S druk in de code editor dan ververst de pagina niet alleen op mijn Mac maar ook op de iPhone en iPad.

Ideaal. Stukje porno ingebouwd in de Mac.

Nu komt het.

Ik heb twee Macs waar ik op werk, een Mac mini en een MacBook Pro. Mijn bestandjes staan in Dropbox dus als ik iets maak op mijn mini en de volgende dag verder wil gaan op mijn MBP dan is dat geen probleem omdat je aan dezelfde bestanden werkt.

MAAR... omdat het dezelfde bestanden zijn is er ook maar één config bestand.



Zie je het probleem? Elke Mac heeft een eigen Bonjour-adres. Je kan niet zeggen mac.local is het Bonjour-adres voor de Mac mini en ook voor de MacBook Pro.

Ik moet dus continu wisselen tussen mac.local en macbook.local door de ene uit-te-commentariëren.


Wat ik liever zou hebben is dat ik één vast adres heb bijv. 0.0.0.0 ( iets makkelijks geen IP-adressen )



En dat deze 0.0.0.0 op de Mac mini automatisch wordt doorgestuurd naar mac.local en bezoek ik 0.0.0.0 op mijn MacBook Pro dan wordt ik automatisch doorverwezen naar macbook.local.

Op die manier genereert bij site generator altijd dezelfde 0.0.0.0 urls ongeacht op welke computer ik werk maar als ik dan op linkjes klik wordt er automatisch [computer].local van gemaakt.
antw: Hostfile (localhost) naar Bonjour redirecten
9 juni 2019 - 14:36    reactie #3
geplaatst door: jaco123
Dank voor de toelichting.

Ik weet niet wat voor site generator/scripttaal je gebruikt, maar het lijkt er dus op dat je absolute URLs genereert?
Heb je daar een specifieke reden voor? Het lijkt mij logischer om een relatieve URL te maken, dus niet bijv: http://mac.local/site/pagina2 , maar alleen site/pagina2. Dan werkt de site op elke server, ongeacht op welke machine hij nou draait.
Kun je het hele host-veld niet weglaten uit de config?

Je zit denk ik toch ook met hetzelfde probleem als je je site van je development-omgeving naar de productie-webserver verplaatst?
Met relatieve URLs heb je dat probleem niet.

antw: Hostfile (localhost) naar Bonjour redirecten
9 juni 2019 - 19:53    reactie #4
geplaatst door: Feek
Volgens mij gaat dat niet zo 123 lukken.

Als je namelijk bv via een /etc/private/hosts file gaat rommelen in je hosts, dus dat 0.0.0.0 naar localhost gaat of naar bv mac.local, heeft dat alleen effect op die machine, en kan je de site niet meer op je iPhone of iPad bezoeken. Maar ook niet meer op je Macbook Pro.

Een aanvullende vraag. Het kan zomaar zijn dat je Mini altijd aan staat. Zou het een optie kunnen zijn om de Jekyll server altijd op je Mini te laten draaien? Dus dat daar de site gegenereerd wordt? Misschien is de LAN-sync van Dropbox snel genoeg om het werkbaar te maken. Anders de bestanden direct op je Mini bewerken..

Maar ik denk dat het snelste is een soort script te schrijven. Een script dat eerst host:mac.local vervangt en vervolgens Jekyll server start.
antw: Hostfile (localhost) naar Bonjour redirecten
9 juni 2019 - 23:04    reactie #5
geplaatst door: zwap

geblokkeerd

Of mbv een Applescriptje (Automator) van config file wisselen.
antw: Hostfile (localhost) naar Bonjour redirecten
10 juni 2019 - 11:59    reactie #6
geplaatst door: Shmoo

geblokkeerd

Citaat
Je zit denk ik toch ook met hetzelfde probleem als je je site van je development-omgeving naar de productie-webserver verplaatst?
Met relatieve URLs heb je dat probleem niet.

Als je de site bouwt voor productie gebruik je een ander commando 'build' ipv 'serve'. Dat gebruik ik bijna nooit of er moet al serieus iets fout gaan.

Het verschil tussen beide is ook niet heel groot, localhost vs je domeinnaam --> die ook gespecificeerd wordt in je config.



Ik zie nu ook in de docs van Jekyll dat er mogelijkheden zijn om te kickstarten van verschillende config bestanden. 🛵

Je zou dus elke computer een eigen config bestand kunnen geven naast de default config. Let wel op dat je deze extra config bestanden in je .gitignore bestand plaatst want daar zit niemand anders dan jij op te wachten.


.



Het wordt op deze manier wel weer een hoop typewerk in Terminal om de site te starten. Misschien moet ik dat dan ook maar eens gaan automatiseren via Alfred.
antw: Hostfile (localhost) naar Bonjour redirecten
10 juni 2019 - 16:20    reactie #7
geplaatst door: jaco123
Aha, we komen er wel: Je gebruikt Jekyll, dat was me nog niet duidelijk.

Maar het ziet er naar uit dat je de oplossing gevonden hebt? Je moet dan aan het "jekyll serve" -commando de optie "--host macmini"  toevoegen.

Type je de serve-commando's steeds met de hand in Terminal of start je dat commando vanuit je editor?

Ik heb persoonlijk de neiging om lange commando's die vaker terugkomen nooit veel vaker dan een paar keer in te typen. Maak er simpelweg een scriptje of een alias van "jkserve" of zo die dan alle parameters naar wens instelt.
Dit scriptje is dan op elke ontwikkel-machine anders, maar je workflow blijft zo wel gelijk op alle machines.
antw: Hostfile (localhost) naar Bonjour redirecten
10 juni 2019 - 16:53    reactie #8
geplaatst door: Shmoo

geblokkeerd

Met de hand in Terminal maar als je eenmaal aan de gang bent met een project is dat meestal een kwestie van Terminal openen > Pijltje omhoog (laatst gekozen commando's) en dan Enter.

Zolang Jekyll, Ruby, Gems, Nodejs, Brew en npm niet updaten loopt altijd alles gesmeerd. 😅

Maar idd. ik ga via Alfred maar eens een Worfklow aanmaken zodat ik in Spotlight kan typen: Jekyll start <project_naam> en dan Enter. Daar moet wel iets op te vinden zijn om dan a.h.v een variabele te bepalen of het mac.local moet worden of macbook.local
antw: Hostfile (localhost) naar Bonjour redirecten
10 juni 2019 - 18:14    reactie #9
geplaatst door: Feek
met
scutil --get LocalHostName

heb je jouw host naam al te pakken, en met de volgende code de volledige hostname :)
hostName=`scutil --get LocalHostName`
shmooHost=$hostName'.local'

Overigens het verschil tussen serve en build is dat bij serve allen de nieuwe wijzigingen worden doorgevoerd en bij build de gehele site opnieuw wordt gegenereerd.