W porządku.
Witamy spowrotem.
Więc w tym filmie mamy zamiar rozwiązać problem, który już wspomniałem w poprzednim filmie, który jest, że teraz używamy jednej bazy danych między naszym lokalnym środowisku cloud nine rozwoju i naszego środowiska produkcyjnego na Heroku.
Tak więc nasz kod jest wdrażane przy użyciu tej samej bazy danych, która jest nasz poligon, który tak naprawdę nie jest to świetny pomysł.
Wszystko działa w porządku to nie jest problem w tym sensie, że nasz kod jest uszkodzony lub że nie możemy uzyskać stosując ten sposób, ale to naprawdę nie jest to dobra praktyka, ponieważ nie chcemy mieć jedną bazę danych, gdzie wiesz, że jeśli mamy duża aplikacja nasza główna baza danych z wszystkich naszych użytkowników, która jest stosowana.
Nie chcemy być testowanie rzeczy i wkręcania wokół i dodając nowe funkcje przypadkowe usunięcie wpisów w bazie danych lub usunięcie całej bazy danych.
W naszym środowisku rozwoju.
Więc chcesz zachować te oddzielne.
I właśnie teraz, aby wykazać, czego się dzieje.
Muszę pamiętać, że to, co zrobiliśmy było zaktualizowaliśmy nasz kod zamiast używać miejscowych gospodarzy.
Nie można karmić 10 lub niezależnie od bazy danych, albo nie miał jednak Wersja na Cloud 9 zaktualizowaliśmy to być Mangu lab.
I to jest nasz Mongo lab instancji i jest to ten sam, mamy to działa lokalnie teraz.
I na Heroku więc będę po prostu odświeżyć stronę na obu.
To Heroku wdrożyć jak widać mamy jeden rodeo plażą i znów mamy rodeo plażę po prostu udowodnić, że są one połączone oczywiście.
Dodajmy nowy campingu tutaj.
Nazwę dla tego jednego będzie Kirby Cove.
Ja po prostu użyć tego obrazu, który jest tu taki, który wziąłem kilka dni temu wtyczkę zupełnie bezwstydny.
Nic nie można na to poradzić.
Więc mam zamiar skopiować tę pastę, że tu i po prostu umieścić bla bla bla auto kompletne.
Dziękuję Ci.
Chrome kliknij Wyślij.
Dobrze więc mamy tu na tym Heroku.
I odświeżyć.
Mam ten sam kod Kirby stworzył tutaj lokalnie.
Więc to nie jest nawet o skutkach katastrofy.
Gdy deweloper może przypadkowo usunąć całą bazę danych.
Zobaczmy to.
Powiedzmy, że chciałem przetestować funkcję chciałem wiedzieć, usuwać pracy na pracy mojego Usuń trasę za.
Więc jeśli pójdę tutaj i jeśli Usunąłem coś, czego nie jestem zalogowany, ale jeśli nie usuwać tego jestem również usuwania go z produkcji, co oznacza, że ​​usuwam czyjąś rzeczywiste dane, które nigdy nie jest dobre.
Więc jest to naprawdę dobry pomysł, aby mieć osobne bazy danych.
Tak więc jednym ze sposobów rozwiązywania tego problemu jest po prostu wrócić do Cloud 9 i po prostu w siódmym przełącznika.
No używamy tutaj tak, że jesteśmy teraz za pomocą wersji localhost obozu ponownie, aby zapisać zrestartować serwer tu i teraz w Cloud 9 5 odświeżenia.
Zobaczysz, że używamy starą wersję lub co używaliśmy wcześniej lokalnej wersji i Heroku nadal używamy instancję laboratorium Monga bo teraz są one zsynchronizowane.
Mamy zmian, które wprowadzone lokalnie na Cloud 9, że nie domagały się jej OK.
I to jest w porządku.
To będzie działać to ważne, ale to trochę denerwujące, ponieważ jeśli chcemy powiedzmy dodaje nową funkcję zmienić C S i chcesz zaktualizować, że w dniu Heroku.
Więc mam zamiar dowiedzieć się, co mam zamiar zrobić z naszej bazy danych, którą znamy.
Będę musiał wypowiedzieć się na to uwagę komentarz lub ponownie popełnić na Odkomentuj że jeden zapisać i dowodzić, że wszystkie pchnąć go do Heroku A jeśli chciałem dodać nową funkcję ponownie lokalnie lub test coś na zewnątrz.
I komentarz, że i usuń to i to jest po prostu tak naprawdę nie jest dobrym rozwiązaniem.
Jednak nie ma innego rozwiązania lub inne podejście, które możemy podjąć.
I w zasadzie to, co mamy zamiar zrobić, to napisać kod, który mówi, jeśli jesteśmy w cyklu produkcyjnym lub ustawić bazę jesteś z tego.
W przeciwnym razie ustaw ją za to tutaj.
Teraz nie jest to faktycznie będzie to if.
A my nie jesteśmy technicznie sprawdzenie czy jesteśmy w produkcji, czy jesteśmy w lub jeśli jesteśmy na Heroku.
Jest to trochę inaczej.
Co zamierzamy zrobić, to skorzystać z czegoś, co nazywa zmiennych środowiskowych.
Więc widziałem ich wcześniej.
Ta mała linia tutaj którego opinie i każdy ekspresowe Proces aplikacji nie zazdroszczę portu proces EMV IP.
Więc co to oznacza tu, co to.
I poszedłem nad tym krótko, ale myślę, że zarobisz trochę więcej sensu teraz, że masz trochę więcej doświadczenia za pasem.
Co to oznacza to środowisko, gdzie ten kod jest w trakcie wykonywania.
Tak więc proces, który zazdrościł się port, na siódmym może może być inny niż proces, który Dot portu na jej Roku prawdopodobnie jest IP na pewno jest.
To są sposoby dodawania zmiennych, które nie są zapisane rzeczy, które zmieniają się w zależności od środowiska są one właśnie dotarty.
Więc moglibyśmy umieścić coś w rodzaju 80 80 tutaj.
Ale oczywiście to jest ustalony.
To nie jest dynamiczny.
To pozwala nam na zmienne, które reagują na środowisko oraz w węźle w javascript będzie właściwie tylko węzła.
Oni zawsze rozpocząć procesu D-NV to w jaki sposób z nich korzystać.
A następnie nazwę zmiennej.
Więc co mamy zamiar zrobić tutaj jest mieć zmienną, która będzie nazywać bazie Yoro i Heroku zamierzamy ustawić bazę jesteś w stanie być tak długiej rzeczy tu i wtedy wszystko będzie musiał środowisko jest w zasadzie napisać proces w baza jesteś.
I że będzie odnosić się do prawidłowego ci URL dla naszej danym środowisku.
A potem zrobimy to samo tutaj.
Jesteśmy dobrze osadzona w siódmym bazy danych AREL być Mongar D-B dwukropek ukośnik nam localhost mogła Campfield 10.
Więc znowu chodzi o to, że możemy utworzyć zmienną środowiskową które nie wykazały, jak to zrobić.
To jest po prostu jak z nich korzystać.
Ale pamiętaj, to przychodzi spoza tej aplikacji.
Ten pochodzi z aktualnej aplikacji lub rzeczywistym środowisku serwera, że ​​jesteśmy uruchomiony kod na.
Tak więc, aby wykazać, w jaki sposób dokonać tej pracy mam zamiar rozpocząć przechodząc tutaj zamykając się i zamierzam utworzyć nową zmienną środowiskową w linii poleceń w środowisku, gdy eksport typ jest nowe polecenie, a następnie I zamierzam napisać zmienną środowiskową, która zazwyczaj konwencja ma do czynienia we wszystkich czapki.
Jak widać tutaj portu IP.
Więc zrobimy bazę danych.
Wszyscy jesteście równi i mamy zamiar rozpocząć zresetowanie równa co chcemy uruchomić na naszym siódmym przykład co chcemy bazę jesteś wszystkim równe.
Tak po prostu i naciśnij klawisz Enter, aby sprawdzić, czy tak było.
Zrobi to tu właściwie tutaj.
Anuluj ten proces dziennika.
Tato zazdrości.
I to musi odpowiadać bazy danych znasz.
A jeśli widzimy to Mongar D-B Colón bla bla bla lokalnego szereg Canvey 10 rożnie z powrotem lub wydrukować to wiemy, że mamy poprawnie skonfigurować bazę rozwojową znasz.
Zobaczmy więc, co dzieje się węzeł.
Tak, idziemy zobaczyć, że został on wydrukowany tutaj.
Nigdy nie mówiłem, wydrukować localhost.
Można udawać.
Powiedziałem zmienna środowiskowa bazie jesteś w górę.
Teraz wszystko, co musimy zrobić, to powiedzieć Mangeshkar podłączyć do przetwarzania bazy nvi.
Ty IRA, a następnie Heroku musimy iść aktualizacji bazy wiesz być tym Mongo lab giganta Jesteś cały ciąg, ale chcemy tylko żeby to się stało na Heroku.
Chcemy zostawić to w spokoju w siódmym niebie.
Więc po prostu upewnić się, że działa tak uwokalnić ponownego uruchomienia.
Wspaniały.
Chodźmy do naszej poprawnej wersji tutaj odświeżyć, a my wciąż się lokalny kod Heroku jest oczywiście bez zmian, ponieważ nie skłoniły żadnego kodu do Heroku.
Więc teraz, jeśli mamy ocalić to i dodawać i zobowiązać powiedzieć zaktualizować Ci IRL się wcisnąć Heroku M ..
Jeśli spróbujemy uruchomić wersję Heroku teraz gdybym tak szybko, jak to zakończy przynajmniej jeśli mogę spróbować odświeżyć stronę mam zamiar mieć błąd, ponieważ Heroku są serwery, które byłyby w stanie znaleźć studium procesu oraz bazę vidette wiesz, bo to nie jest skonfigurowany.
Więc po prostu pokazać, że odświeżanie może zająć trochę i powinny one uzyskać błąd aplikacji i mimo że dzieje się tam udać.
Błąd aplikacji ponownie, jeśli naprawdę chcesz wiedzieć dokładnie, co się dzieje.
To dzienniki Heroku i można zobaczyć tutaj nie wiem, jak przydatny jest komunikat o błędzie, że mamy będzie uczciwie.
Zobaczmy.
Może to być jedna z tych wiadomości, które nie powiedzieć dokładnie to, co mieliśmy nadzieję, ale to mówi nam Mongar D-B wystąpi błąd.
Yesso prawda nie jawnie wspomnieć, że ta baza jesteś jest problem, ponieważ to, co rzeczywiście dzieje jest to, że próbuje połączyć się z pustym ciągiem najbardziej prawdopodobnego, które technicznie nie jest problemem, z wyjątkiem faktu, że nie ma w bazie znajduje się przy jesteś pusty ciąg.
Więc jest to swego rodzaju nieoczekiwanego komunikatu o błędzie.
Więc mówię wam jednak, że problemem jest to, że nie utworzyły procesu lub że nie ustawić zmienną środowiskową na Heroku.
Więc to zrobić, że istnieje kilka różnych sposobów możemy to zrobić, jeśli jedziemy do samego Heroku.
Pewnie trzeba zalogować się ponownie tu odświeżyć stronę.
Nope nie muszę leżeć widok.
Oto nasza aplikacja.
Dobrze, jeśli idziemy i idziemy w ustawieniach uważam, że jest.
A potem utrzymać przewijania w dół lub przejść do config zmienne.
Możemy dodać w zmiennej tutaj.
Dlatego chcemy, baza danych Earl się, że gigant ciąg.
Skopiowałem go i kliknij przycisk Dodaj.
A jeśli wracamy teraz spróbuj odświeżyć stronę.
Działa to doskonale OK.
Więc to jest jeden sposób to zrobić.
Pokazałem, jak przejść do Heroku i dodać w bazie kluczy pary wartość, którą Erlass i klucz lub nazwę zmiennej zmiennej środowiskowej, a następnie wartości.
To jeden ze sposobów robi to w inny sposób to zrobić to za pomocą wiersza polecenia można uruchomić polecenie.
Możemy to zrobić tutaj.
Mam No.
J. S. docs wsparcia otwarte na Heroku ta linia Heroku config jelita grubego, a następnie ustawić klucz równa wartości.
Więc ja po prostu skopiuj ten pierwszy bit, jeśli chcemy nie zamierzam faktycznie zrobić.
I nie zamierzam wcisnąć enter, ale po prostu chcę pokazać, że byłoby Heroku config Kolin ustawiony, a następnie baza jesteś l równa, a następnie mieliśmy pastę, że jesteś w górę.
Ale mam zamiar to zrobić.
Tak więc kolejna rzecz, której jeszcze nie wspomniano, że jest jeszcze jeden powód, dla którego za pomocą zmiennych środowiskowych jest to, że są tam ukryte nie są one narażone na cokolwiek to jest deweloperzy jeśli umieścić ten kod się na dobre piasty.
Nie chcemy mieć naszą bazę danych RL tu oczywiście czy wiesz już nie moja baza jesteś.
Ale to oczywiście nie jest prawdziwa aplikacja.
Ale jeśli to był prawdziwy wniosek, nawet jeśli jest to aplikacja open source lub części mojego kodu lub open source nie chcę być narażając swoje dane lub moją bazę jesteś poza każdemu, kto patrzy na kodzie.
Więc mając tę ​​linię tutaj Mongar rozpocząć proces connect, że baza danych dot NV Ci arow, że nie jest już problemem.
Tak, że to jest wszystko, że deweloper nie zobaczy ani nikogo przeglądania kodu wrócić do domu i będą musieli założyć własną bazę danych.
Jesteś wszystkim w użyciu zmiennych środowiskowych.
OK.
Warto więc podsumować to, co zrobiliśmy.
Zaczęliśmy od mającego zagadnieniu problem jednej bazy do rozwoju i produkcji wspólne bazy danych, aby to naprawić.
Założyliśmy nasze zmienne środowiskowe URL bazy danych lokalnie w siódmym niebie i na dwóch różnych wartości dla tej samej zmiennej.
A potem obejrzano tej zmiennej zmiennej środowiskowej przy użyciu procesu, bazy danych ENVI IRL i podłączyć do tego.
Mamy więc dwa wyniki.
Jedną rzeczą, która mi wspomnieć, że warto ustawiania wartości domyślnej.
Więc powiedzmy, że jakoś wkręca się moje app gdybym ponownie uruchomić komputer.
Nie wiem zresetować ten obszar roboczy w moim zmiennej środowiskowej nie ma albo wyślę to do kogoś i chcę je mieć nie wiem domyślną bazę danych, które mogą wykorzystać po prostu zrobić to tak, że kod nie robi 't całkowicie złamać, jeśli nie wprost to skonfigurować.
Co mogę zrobić, to dodać w niewielkiej ilości kopii zapasowej tak zrobimy zmienną, a my po prostu nazwać.
Wszyscy jesteście równi i będziemy robić proces rozpoczął się w bazie jesteś prawdziwe lub.
A potem będziemy umieścić niektóre są tam więc zróbmy to, co było to jesteś ELLYARD już zgubił.
Tutaj jesteś.
Więc będzie to być tylko rezerwowym.
Więc jeszcze raz, co się tutaj dzieje to nie jest to obowiązkowe, nie zmienia funkcjonalność, ale jeśli z jakiegoś powodu moja zmienna, ale nie przejmował się ani nie istnieje.
Zamiast łamanie kodu, co stanie się to, że to wy wszyscy to zmienna będzie równa zmiennej środowiskowej, jeśli istnieje.
Jeśli jest to pusty ciąg choć lub jeśli nie istnieje to będzie równa tej, która jest po prostu nasza kopia zapasowa.
W tym przypadku na siódmym jest dokładnie to samo.
To naprawdę nie jest obowiązkowe ponownie.
To tylko rodzaj dobra praktyka, aby w przypadku coś poszło nie tak.
Ale tak naprawdę jestem po prostu pokazując je do Ciebie, ponieważ jest to dość powszechne, aby zobaczyć, jak również.
OK.
Więc trochę długo zdyszany lub nie okrężną drogą zbliża się to, ale to wszystko sprowadza się do tego, że chcemy proces różnych baz danych, które masz w bazie vidette IRL sposób mamy dostęp do zmiennych środowiskowych z aplikacji węzła.
Chcesz, aby było jasne, choć zmienne środowiskowe nie są rzeczą węzła lub javascript rzeczą.
aplikacje Ruby szynach aplikacji Pythona aplikacje mogą uzyskać dostęp do wszystkich zmiennych środowiskowych i wszystkie wyglądają stosunkowo prosty podobny do tego po prostu zdarza się, że w węźle piszesz proces, w VI w innych językach, takich jak Ruby.
Będziesz często zobaczyć coś takiego bazie ENV znasz.
Więc jest to uniwersalna koncepcja nie jest to specyficzna sprawa węzła i jest uniwersalna dla wszystkich rodzajów aplikacji, jak również.
Nie można po prostu użyć tego do bazy adresów URL go używać kiedy tylko chcesz.
To wygląda jak typo tutaj.
Tak czy inaczej należy localhost.
Użyj tej każdym razem, gdy chcesz mieć różne informacje między innym rozwoju lub produkcji środowiskach.
Za pomocą tego również, gdy chcemy ukryć lub niejasne informacje od kogoś i się pomóc na przykład.
Więc jeśli miałeś paypal lub swoją Strype karty kredytowej przetwarzania informacji API wewnątrz aplikacji, ponieważ trzeba było go do kodu.
Cóż, jeśli chcesz podzielić się swoją aktualną get jaki sposób oczywisty nie chce pchać, że w górę.
Więc co można zrobić, to utworzyć zmienną środowiskową i zrobić coś podobnego procesu.
Ian VI zmarł bardzo poufne informacje i to jest sposób, aby obejść ten problem chce udostępnić swój kod upublicznij ale również nie chce podzielić się bardzo wrażliwe informacje, gdzie ktoś mógłby wziąć swój klucz API i podbiec rachunek tysięcy i tysiące dolarów, co faktycznie dzieje się jedne z większych firm są znacznie lepiej o policji, że.
Więc Amazon na przykład, jeśli masz swój klucz API Amazon czy informacje AWOS swoją informację Amazon Web Services Web Services on get Hobe rzeczywiście będzie wiedział i wyślą Cię wiadomość, że trzeba wziąć to w dół natychmiast lub zamierzają wyłączyć to.
Ktoś mógłby obciążyć tysiące dolarów do tego.
Mogli ci Albo zasadzie konta uciekać ogromny rachunek za to, że nie trzeba płacić.
Zdarza się relatywnie często.
Słyszałem o niektórych uczniów mających ten problem i kopalni i obiecują, ale na pewno słyszałem o tym wcześniej.
W porządku.
Więc przetwarzać zazdrość sposób mamy dostęp do zmiennych środowiskowych.
Mamy dwie bazy tabor obecnie wdrażane dwóch różnych baz danych.
Nie udostępniamy żadnych informacji, które są, jak tego chcemy.