Elixir Phoenix: een App maken met Tests (deel 1: de Setup)

bijgewerkt: 16 januari 2019

leren door te doen

mijn voorkeur is leren door te doen. Ik kan de hele dag dingen lezen en bekijken, maar totdat ik de code onder de knie krijg, komt het niet echt tot me door. Een geweldige manier om te leren door te doen is om een app te bouwen, dus dat is wat we gaan doen!

het zal geen overzicht op hoog niveau zijn dat alles uitlegt wat er gebeurt. Het is meer een walk-through voor degenen die enige bekendheid hebben met Elixir en Phoenix, maar nog niet hun eerste app te bouwen. Ik gebruik Phoenix 1.4 en Elixir 1.8 voor deze tutorial.

de functionaliteit zal eenvoudig zijn. U kunt een account aanmaken. U kunt zoeken en video ‘ s bekijken. U kunt nieuwe video ‘ s toevoegen. Er zullen een aantal complexiteiten zoals het verkrijgen van informatie van de YouTube API om video ‘ s toe te voegen en het gebruik van Tailwind CSS in plaats van de standaard Milligram (Milligram vervangen Bootstrap in Phoenix 1.4). Echter, aangezien ik al door de moeite van het bestrijden van de code om dingen te laten werken, alles moet soepel verlopen voor u.

laat het me weten als je ergens vast komt te zitten en Ik zal je graag helpen. Laten we beginnen!

opmerking: als je ergens vast komt te zitten, kun je een reactie achterlaten of de repo op GitHub bekijken. Elk deel heeft zijn eigen tak en zal aan het begin worden gekoppeld met (GitHub). Er zullen ook commit hashes overal zijn zodat je kunt zien wat er gedaan is voor een bepaalde sectie. Ze zullen eruit zien als de hieronder (70ea207). Als ze in een subrubriek staan, heeft de commit betrekking op die hele rubriek. Anders wordt de commit gedeeld aan het einde van de relevante tekst.

Genereer de app (70ea207) (GitHub)

We gaan Catcasts bouwen. Het zal een plek zijn om je favoriete YouTube cat-video ‘ s te delen. De gebruiker wordt gemaakt door in te loggen met Google. De video ‘ s worden gemaakt door een URL naar de YouTube API te plaatsen en de informatie terug te krijgen. Deze informatie wordt gebruikt om een pagina met de video ingesloten te maken.

als je Elixir en Phoenix nog niet hebt geïnstalleerd, kun je de elixir guide en de Phoenix guide volgen. Nu ervan uitgaande dat is gedaan, tijd om onze app te maken. We draaien mix phx.new catcasts om onze app te genereren, en als het vraagt ” afhankelijkheden ophalen en installeren? “we zullen “y” zeggen.

Postgres (975847b)

aan het einde van onze app wordt gegenereerd, krijgen we een aantal handige instructies over wat we vervolgens moeten doen.

uitvoer van het genereren van onze app

het eerste wat we moeten doen nadat we cd catcasts en voordat we mix ecto.create uitvoeren, is onze database configureren. Afhankelijk van hoe u uw lokale Postgres setup, er is een goede kans voor uw lokale omgeving de gebruikersnaam is uw home directory (voor mij zou het debrianemory), en uw wachtwoord veld is leeg. Laten we ons config/dev.exs bestand openen en onze database configureren.

Opmerking: Als u Postgres niet hebt ingesteld op uw lokale machine, heeft Heroku een handige handleiding voor het instellen. Als u Homebrew gebruikt, kunt u in plaats daarvan brew install postgresql op de opdrachtregel uitvoeren.

config/dev.exs

u kunt dan mix ecto.create uitvoeren, uw app zal compileren, en dan zult u het prachtige bericht zien, ” de database voor Catcasts.Repo is gecreëerd.”Op dit moment kun je mix phx.server uitvoeren en http://localhost:4000 bezoeken om ” Welcome to Phoenix!”

Opmerking: Als u een bericht ziet dat lijkt op ” zal ik rebar3 installeren? (als het niet-interactief wordt uitgevoerd, gebruik dan ” mix local.rebar — force”)”, ga je gang en selecteer “y”.

we hebben ook drie tests die zijn gemaakt met de app die momenteel passeren. Om ze te zien passeren, moeten we eerst ook onze database-Instellingen Bijwerken in config/test.exs.

config/test.exs

u kunt nu de tests uitvoeren met mix test (uw app zal compileren voordat u de tests uitvoert) en de mooie groene tekst”3 tests, 0 mislukkingen” zien.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.