Okee.
Welkom terug.
Dus in deze video gaan we het probleem dat ik in de laatste video die is dat juist nu we via een database tussen onze lokale cloud negen ontwikkelomgeving en onze productie-omgeving op Heroku vermelde adres.
Dus onze ingezet code wordt met behulp van dezelfde database die onze proeftuin is dat is echt niet een geweldig idee.
Dingen werken prima het is niet een probleem in de zin dat onze code is gebroken of dat we niet kunnen krijgen door het gebruik van deze manier, maar het is niet echt een goede praktijk, omdat we niet willen dat een database waar je weet dat als we een grote applicatie onze databank met al onze gebruikers dat is ingezet.
We willen niet te testen dingen en schroeven rond en het toevoegen van nieuwe functies per ongeluk wissen van gegevens in de database of het verwijderen van de gehele database.
In onze ontwikkelomgeving.
Dus je wilt deze gescheiden te houden.
En alleen maar om nu te laten zien wat we hebben aan de hand.
Ik moet niet vergeten dat wat we deden was dat we bijgewerkt onze code in plaats van de lokale hosts.
Je kunt niet voeden 10 of wat dan ook de database u of u daar gehad, maar de lokale versie op wolk 9 we bijgewerkt aan Mangu lab.
En dit is onze Mongo lab aanleg en het is dezelfde die we hebben dit running lokaal nu.
En op Heroku dus ik zal gewoon Vernieuw de pagina op beide.
Dit is Heroku implementeren zoals je kunt zien hebben we een rodeo strand en we hebben rodeo strand weer gewoon om te bewijzen dat ze verbonden zijn natuurlijk.
Laten we een nieuwe camping toe te voegen hier.
De naam voor deze ene zal Kirby cove zijn.
Ik zal gewoon gebruik maken van deze afbeelding hier, die is er een die ik nam een ​​paar nachten geleden volledig schaamteloze plug.
Niets dat je kunt doen.
Dus ik ga die pasta die hier en gewoon blah blah blah auto volledig te kopiëren.
Dank je.
Chroom klik op verzenden.
Oké dus we hebben dit hier op Heroku.
En ik vernieuwen.
Ik heb dezelfde Kirby code hier ter plaatse gemaakt.
Dus het is nog niet eens over katastrofisch evenementen.
Wanneer een ontwikkelaar kon de hele database per ongeluk wissen.
Laten we eens kijken dat.
Laten we zeggen dat ik wilde een eigenschap die ik wilde weten is te verwijderen werkt aan het werk van mijn delete route te testen.
Nou als ik ga hier en als ik verwijderde iets wat ik niet ben aangemeld, maar als ik dit ben ik het ook het verwijderen van de productie hebt verwijderd, wat betekent dat ik het verwijderen van iemands feitelijke gegevens, die is nooit goed.
Dus het is echt een goed idee om afzonderlijke databases hebben.
Dus een manier om het oplossen van dit probleem is alleen maar om terug te gaan naar Cloud 9 en gewoon in de zevende hemel switch.
Nou we hier gebruiken, zodat we nu opnieuw met het kamp localhost versie om op te slaan de server opnieuw hier en nu op cloud 9 5 refresh.
Je zult zien dat we met de oude versie of wat we gebruikten voor de lokale versie en Heroku zijn we nog steeds met behulp van de Monga lab bijvoorbeeld omdat op dit moment zijn ze niet synchroon lopen.
We hebben veranderingen die we lokaal gemaakt op cloud 9 dat we niet hebben geduwd om haar OK.
En dat is prima.
Dit werkt het is geldig, maar het is een beetje vervelend, want als ik wil laten we zeggen een nieuwe functie toegevoegd ik de C S S en ik wil updaten die op Heroku.
Nou dan ga ik te hebben om erachter te komen wat ik ga doen over onze database die je kent.
Ik ga om dit uit te reageren opmerking gemaakt dat of recommit op uncomment dat één slaan en bevelen dat allemaal duw hem naar Heroku En als ik wilde een nieuwe functie lokaal opnieuw toe te voegen of te testen iets uit hebben.
Ik commentaar dat en uncommenten dit en het is gewoon het is niet echt een goede oplossing at all.
Er is echter een andere oplossing of een andere benadering die we kunnen nemen.
En eigenlijk wat we gaan doen, is schrijven een aantal code die zegt dat als we in de productie run of stel de database die u erop uit zijn om dit.
Anders zet deze om dit hier te zijn.
Nu is het niet echt van plan om een ​​if-statement zijn.
En we technisch gezien niet te controleren of we in de productie als we in of als we op Heroku.
Het is een beetje anders.
Wat we gaan doen is gebruik maken van een zogenaamde omgevingsvariabelen.
Daarom hebben we ze eerder gezien.
Deze kleine lijn hier die beoordelingen en elke Express app proces doet jaloers poort proces dat EMV IP.
Dus wat dit betekent hier wat dit.
En ik ging dit kort, maar ik denk dat je een beetje meer besef nu dat je wat meer ervaring onder je riem te maken.
Wat dit betreft is de omgeving waar deze code wordt uitgevoerd.
Dus proces dat je jaloers up-poort op de zevende hemel kan misschien anders dan proces dat poort stip op haar Roku waarschijnlijk IP zeker is.
Dus deze zijn manieren om het toevoegen van variabelen die niet moeilijk zijn gecodeerd dingen die veranderen gebaseerd off van het milieu ze worden uitgevoerd in.
Dus konden we iets als 80 80 hier hebben gezet.
Maar dat is natuurlijk hardcoded.
Dat is niet dynamisch.
Dit stelt ons in staat om variabelen die reageren op het milieu en in het knooppunt in javascript wil eigenlijk alleen maar een knoop te hebben.
Ze beginnen altijd met een proces D-NV dat is hoe u ze opent.
Gevolgd door de naam van de variabele.
Dus wat we hier gaan doen is een omgeving variabele die zal roepen databank Yoro en Heroku we gaan database die u in staat om deze lange ding hier te zijn ingesteld en dan zal alles hoeft te doen is eigenlijk te schrijven proces de database die u bent.
En dat zal verwijzen naar de juiste u URL voor ons bepaalde omgeving.
En dan zullen we hetzelfde doen hier.
We zijn goed geplaatst in de zevende hemel database die u Arel te Mongar D-B colon slash ons localhost ze kan Campfield 10.
Dus nogmaals het idee is dat we een omgeving variabele die ik niet hebben aangetoond u hoe dat te doen kan creëren.
Dit is gewoon hoe u ze opent.
Maar vergeet niet dat dit afkomstig is van buiten van deze applicatie.
Dit is vanuit de concrete toepassing of de werkelijke omgeving van de server dat we de code uitvoert.
Dus om te laten zien hoe wij dit werk dat ik ga om te beginnen door te gaan hier uit te sluiten en ik ga naar een nieuwe omgeving variabele in de opdrachtregel in de omgeving te creëren wanneer een soort export is een nieuwe opdracht en dan heb ik ' ben van plan om mijn omgeving variabele die meestal het verdrag te maken heeft in hoofdletters schrijven.
Als je hier IP-poort kan zien.
Dus we databank te doen.
Jullie zijn allemaal gelijken en we gaan om te beginnen met het resetten van het gelijk zijn aan wat we willen draaien op onze cloud negen bijvoorbeeld wat we willen de database die u allemaal gelijk te zijn.
Net als dat en druk op Enter om te controleren of dat waren.
Ga dit hier doen eigenlijk hier.
Annuleren die log proces.
Daddy afgunst.
En dit moet databank je weet aan te passen.
En als we zien dit Mongar D-B Colon's blah blah blah lokale host van Canvey 10 spit terug uit of uitgeprint dan weten we dat we met succes hebben het opzetten van de ontwikkeling van de database die je kent.
Dus laten we zien wat er gebeurt knooppunt.
Ja, er gaan we zien dat het hier werd afgedrukt.
Ik heb nooit gezegd uitprinten localhost.
Je kan doen alsof.
Ik zei dat het milieu variabele gegevensbestand u aan toe bent.
Dus nu alles wat we moeten doen, is zeggen Mangeshkar verbinden met NVI-database te verwerken.
U IRA en vervolgens op Heroku moeten we updaten databank ga je weet dat dit Mongo lab reus Jullie zijn allemaal string zijn, maar we willen alleen dat dat gebeurt op Heroku.
Wij willen dit alleen op wolk negen vertrekken.
Dus laten we maar zorg ervoor dat het werkt zo vocalise een herstart.
Grote.
Laten we naar onze juiste versie hier verfrissen en we zijn nog steeds de lokale code Heroku is natuurlijk onveranderd, omdat we geen code hebben geduwd om Heroku.
Dus nu als we dit op te slaan en toe te voegen en te plegen zeggen dat het actualiseren van de IRL je krijgt duw Heroku M ..
Als we proberen en voer het Heroku versie op dit moment als ik, zodra deze klaar is tenminste als ik probeer en vernieuw deze pagina ga ik een fout omdat Heroku zijn de servers die in staat zijn proces studie en Vidette database zou zijn je weet omdat het niet is opgezet.
Dus gewoon om te laten zien dat refresh een beetje zou kunnen nemen en ze moeten de toepassing fout en terwijl dat is daar gaat we gaan.
Application fout opnieuw als je echt wilt weten precies wat er gebeurt.
Het is Heroku logs en je kunt hier zien dat ik weet niet hoe nuttig het foutbericht dat wij eerlijk zullen zijn.
Laten we eens kijken.
Dit zou een van die berichten die u niet precies vertellen wat je had gehoopt, maar het vertelt ons Mongar D-B is er een fout.
Yesso niet het niet expliciet vermeld dat deze databank je bent is een probleem, want wat er eigenlijk gebeurt is dat het probeert te maken met een lege string meest waarschijnlijke die technisch is geen probleem, behalve voor het feit dat er geen databank gelegen op het u een lege string.
Dus het is een soort van een onverwachte foutmelding.
Dus ik zeg je wel dat het probleem is dat we niet hebben het opzetten van een proces of dat we hebben niet het opzetten van de variabele omgeving op Heroku.
Zo te doen dat er een paar verschillende manieren kunnen we het doen als we naar Heroku zelf.
Ik zal waarschijnlijk moeten terug hier Ik Vernieuw de pagina in te loggen.
Nope Ik heb geen behoefte om terug te liggen.
Hier is onze app.
Nou als we naar binnen gaan en we gaan in instellingen Ik geloof het.
En dan blijven naar beneden scrollen of ga naar variabelen config.
We kunnen hier toevoegen in een variabele.
Dus we willen database die u Earl aan die gigantische string.
Ik kopieerde het en klik op toevoegen.
En als we terug gaan nu proberen de pagina te vernieuwen.
Het werkt perfect in orde.
Dus dat is een manier om het te doen.
Ik liet zien hoe om door te gaan naar Heroku en voeg in een belangrijke waarde paar database Erlass en de toets of de naam van de variabele het milieu variabele en daarna een waarde.
Dat is een manier om het te doen de andere manier van doen is via de command line kunt u een opdracht uitvoeren.
We kunnen dit hier doen.
Ik heb de No.
J.S. ondersteuning docs open op Heroku deze lijn Heroku config dikke darm te stellen en dan is gelijk aan de waarde van het toetsenbord.
Dus ik zal gewoon kopiëren deze eerste bit als we willen dat ik niet van plan om dat daadwerkelijk te doen.
De Ik ben niet van plan om te slaan in te voeren, maar ik wil gewoon om te laten zien dat het zou zijn Heroku config Kolin te stellen en vervolgens de database bent u l gelijk en toen moesten we pasta die u aan toe bent.
Maar ga ik om dat te doen.
Dus een ander ding heb ik nog niet gezegd is dat er nog een goede reden voor het gebruik van omgevingsvariabelen en dat is dat er er verborgen dat ze niet worden blootgesteld aan wat het ook is de ontwikkelaars als je op goede hub zet deze code.
We willen niet dat onze database RL hier natuurlijk of als je al weet niet mijn database die u bent te hebben.
Maar dit is niet natuurlijk een echte app.
Maar als dit was een echte toepassing, zelfs als het een open source applicatie of delen van mijn code of open source Ik wil niet mijn gegevens of mijn database die u erop uit zijn om iedereen die kijkt naar de code bloot.
Dus door het hebben van deze lijn hier Mongar beginnen connect proces dat de NV dot database arow dat is niet langer een probleem.
Dus dat dit is alles wat een ontwikkelaar zou zien of iemand bekijkt de code op te krijgen naar huis en zij zouden hebben om het opzetten van hun eigen database.
Jullie zijn allemaal in het gebruik van omgevingsvariabelen.
OK.
Dus laten we samen te vatten wat we deden.
We zijn begonnen door het hebben van het probleem het probleem van één database voor de ontwikkeling en productie van een gedeelde database op te lossen dat.
We zetten onze database URL omgevingsvariabelen lokaal in de zevende hemel en op twee verschillende waarden voor dezelfde variabele.
En toen benaderd we die variabele het milieu variabele met behulp van proces dat ENVI database IRL en we verbinden met dat.
Dus hebben we twee uitkomsten.
Een ding dat ik zal noemen, is dat het de moeite waard is het opzetten van een standaardwaarde.
Dus laten we zeggen dat ik een of andere manier geschroefd mijn app op als ik mijn computer opnieuw op te starten.
Ik weet niet ik deze werkruimte in mijn omgeving variabele reset is verdwenen of ik stuur dit naar iemand en ik wil dat ze hebben weet ik niet een standaard database dat ze gewoon kunnen gebruiken om het te maken, zodat de code doesn 't helemaal breken als ik niet expliciet deze set-up.
Wat ik kan doen is toe te voegen in een klein back-up, zodat we een variabele zal maken en we noemen het.
Jullie zijn allemaal gelijken en we gaan doen proces begon in de database die u echt bent of niet.
En dan zullen we zetten wat je daar dus laten we doen wat was groot dat u ELLYARD al kwijt.
Daar ben je.
Dus dit zal gewoon een back-up.
Dus nogmaals wat er gebeurt hier is dat het niet verplicht is niet de functionaliteit te veranderen, maar als om wat voor reden mijn omgeving variabele werd verpest of het niet bestond.
In plaats van het breken van de code wat er zal gebeuren is dat dit jullie allemaal variabele het zal gelijk zijn aan de variabele omgeving te zijn als het bestaat.
Als het een lege string al of als het niet dan bestaat het zal gelijk zijn aan deze te zijn die net onze back-up.
In dit geval is in de zevende hemel zijn er precies hetzelfde.
Het is echt niet verplicht opnieuw.
Het is gewoon een soort van een goede praktijken te hebben voor het geval er iets mis ging.
Maar eigenlijk ben ik gewoon laten zien aan u, want het is vrij normaal om dit te zien ook.
OK.
Dus soort van lange adem of geen omslachtige manier om dit te benaderen, maar het komt allemaal neer op het feit dat we willen verschillende databases proces dat in Vidette database die u IRL is hoe we toegang omgevingsvariabelen van een knooppunt app.
U wilt duidelijk te maken hoewel omgevingsvariabelen niet een knooppunt ding of een javascript zaak.
Ruby toepassingen rails toepassingen Python apps ze allemaal toegang hebben tot omgevingsvariabelen en in alles wat ze kijken relatief eenvoudig lijkt op dit gebeurt het gewoon dat in knooppunt dat u proces te schrijven in vi in ​​andere talen zoals Ruby.
Je zult vaak zien zoiets als ENV database die u kent.
Dus het is een universeel concept is het niet een knooppunt specifiek ding en het is universeel in alle soorten toepassingen.
Je hoeft niet gewoon gebruik maken van deze voor database-URL's te gebruiken wanneer je maar wilt u.
Het ziet eruit als een typo hier.
Hoe dan ook moet worden localhost.
Gebruik deze wanneer je maar wilt om verschillende gegevens tussen uw verschillende ontwikkeling of productie omgevingen.
U dit gebruiken ook wanneer u wilt verbergen of obscure informatie van iemand en hulp krijgen bijvoorbeeld.
Dus als u uw paypal of uw Strype credit card processing API informatie had binnenkant van uw aanvraag omdat je het nodig is voor de code.
Nou als je wilt uw huidige get delen hoe je natuurlijk niet wilt duwen dat omhoog.
Dus wat je kunt doen is het creëren van een omgeving variabel en iets als proces te doen.
Ian VI stierf super gevoelige informatie en dat is een manier om dat probleem te willen uw code te delen om het openbaar maken, maar ook niet willen uw super gevoelige informatie te delen waar iemand je je API-sleutel zou kunnen nemen en uitvoeren van een factuur van duizenden en duizenden dollars die in feite een aantal van de grotere bedrijven gebeurt zijn veel beter over politiewerk dat.
Dus Amazon bijvoorbeeld als u uw API-sleutel Amazon of uw AWOS informatie uw Amazon Web Services web services informatie over get hobe ze daadwerkelijk zullen weten en ze zullen u een bericht sturen zeggen dat je nodig hebt om dit onmiddellijk af te nemen of gaan uit te schakelen het.
Iemand zou duizenden en duizenden dollars in rekening brengen dit.
Ze kunnen u of in principe gebruik maken van uw rekening af te lopen een enorme wetsvoorstel dat ze niet hoeven te betalen.
Gebeurt vrij vaak.
Ik heb gehoord van een aantal studenten die dat probleem en van mij en beloven maar zeker ik heb gehoord van.
Okee.
Dus het verwerken van de afgunst is hoe we toegang omgevingsvariabelen.
We hebben twee databases kamp heeft nu ingezet twee verschillende databases.
Ze bevatten geen informatie die is hoe we het willen delen.