1
00:00:00,360 --> 00:00:00,690
好吧。

2
00:00:00,690 --> 00:00:02,110
歡迎回來。

3
00:00:02,120 --> 00:00:16,410
因此，在這個視頻中，我們要去解決，我在最後一個視頻這就是現在我們正在使用我們的本地九霄雲外開發環境和我們的生產環境在Heroku上的一個數據庫中提到的問題。

4
00:00:16,650 --> 00:00:26,480
因此，我們部署的代碼是使用我們的測試地面這實在不是一個好主意相同的數據庫。

5
00:00:26,490 --> 00:00:45,950
事情做工精細它不是在這個意義上的一個問題，我們的代碼被打破或者說我們不能用這種方式獲得，但它真的不是一個好的做法，因為我們不希望有一個數據庫，在那裡，你知道，如果我們有一個大應用我們的主數據庫與所有的使用者認為的已部署。

6
00:00:46,020 --> 00:00:53,830
我們不希望成為測試的東西，胡鬧和數據庫中添加新功能意外刪除的條目或刪除整個數據庫。

7
00:00:53,940 --> 00:00:56,220
在我們的開發環境。

8
00:00:56,340 --> 00:00:58,210
所以，你想保持這些獨立的。

9
00:00:58,590 --> 00:01:01,760
而只是為了現在證明我們已經回事。

10
00:01:01,860 --> 00:01:08,700
我記得，我們​​所做的是我們更新了我們的代碼，而不是使用本地主機。

11
00:01:08,730 --> 00:01:18,050
你不能養活10或任何數據庫，你或者你有存在，但雲9本地版本，我們更新它是滿谷實驗室。

12
00:01:18,300 --> 00:01:23,970
這是我們實驗室蒙戈實例，這是一個我們這個地方現在運行一樣。

13
00:01:24,120 --> 00:01:27,900
而在Heroku所以我就刷新這兩個網頁。

14
00:01:27,930 --> 00:01:37,290
這是Heroku的部署，你可以看到我們有一個圈地海灘和我們再次有圈地海灘只是為了證明它們連接當然。

15
00:01:37,290 --> 00:01:40,920
讓我們添加一個新的露營地在這裡。

16
00:01:42,240 --> 00:01:46,200
對於這個名稱將是科比的小海灣。

17
00:01:47,730 --> 00:01:53,930
我就用這個形象在這裡是一個我花了幾個晚上前完全無恥的插頭。

18
00:01:54,420 --> 00:01:55,870
沒有什麼可以做的。

19
00:01:55,980 --> 00:02:03,750
所以，我要複製在這裡，只是把等等等等自動完成這種糊。

20
00:02:03,900 --> 00:02:04,470
謝謝。

21
00:02:04,470 --> 00:02:07,920
鍍鉻點擊提交。

22
00:02:07,920 --> 00:02:10,870
好讓我們有這個在這裡在Heroku。

23
00:02:11,010 --> 00:02:13,000
我和刷新。

24
00:02:14,280 --> 00:02:18,400
我有同樣的代碼柯比這裡創建本地。

25
00:02:18,780 --> 00:02:22,330
所以，它甚至不是災難性的事件。

26
00:02:22,470 --> 00:02:25,950
當開發人員可能意外的刪除整個數據庫。

27
00:02:26,190 --> 00:02:27,000
讓我們來看看這一點。

28
00:02:27,090 --> 00:02:32,870
比方說，我想測試一個功能，我想知道的是刪除我刪除路由的工作工作。

29
00:02:33,420 --> 00:02:45,400
如果我去在這裡嘛，如果我刪除了一些東西，我沒有簽字，但如果我不從生產刪除此，我也將其刪除，這意味著我刪除某人的實際數據這是從來沒有好。

30
00:02:45,720 --> 00:02:49,000
所以真的有單獨的數據庫是一個好主意。

31
00:02:49,050 --> 00:02:56,420
因此，解決這個問題的一個方法就是回到雲9，只是在九霄雲外開關。

32
00:02:56,880 --> 00:03:11,190
嗯，我們這裡使用的，使我們現在使用本地主機陣營再次版本保存在這裡，現在重新啟動服務器雲9 5刷新。

33
00:03:11,190 --> 00:03:22,510
你會看到，我們使用的是舊版本或者我們使用本地版本前，在Heroku上我們仍然使用艋舺實驗室實例，因為現在他們是不同步的。

34
00:03:22,620 --> 00:03:26,460
我們有我們的雲9，我們還沒有推到她的OK當地所做的更改。

35
00:03:26,790 --> 00:03:28,620
這是罰款。

36
00:03:28,670 --> 00:03:39,040
這將工作是有效的，但它是一種煩人，因為如果我不希望讓我們說增加了新的功能，我改變（C S）S和我想更新在Heroku上。

37
00:03:39,270 --> 00:03:44,470
那好吧，我將不得不找出我要怎麼辦，你知道我們的數據庫。

38
00:03:45,120 --> 00:03:58,030
我不得不註釋掉它評論說，或者重新作出對取消註釋，一個保存和指揮這一切推到Heroku和那麼如果我想在本地再添加新的功能或測試出來的東西。

39
00:03:58,150 --> 00:04:03,650
我評論說，並取消這一點，它只是它真的不是一個好的解決辦法都沒有。

40
00:04:04,230 --> 00:04:07,960
但是，有另一種解決方案，或另一種方法中，我們可以採取。

41
00:04:08,400 --> 00:04:20,430
基本上就是我們要做的就是編寫一些代碼，說如果我們是在生產運行或設置你出這個數據庫。

42
00:04:20,430 --> 00:04:23,690
否則，將其設置為這個在這裡。

43
00:04:24,210 --> 00:04:26,570
現在，它實際上沒有將是一個if語句。

44
00:04:26,760 --> 00:04:31,990
而且我們不是技術上的檢查，如果我們在生產中，如果我們或如果我們在Heroku。

45
00:04:32,190 --> 00:04:33,620
這是一個有點不同。

46
00:04:33,900 --> 00:04:37,300
我們現在要做的是利用一種叫做環境變量。

47
00:04:37,620 --> 00:04:39,940
所以，我們以前見過他們。

48
00:04:40,470 --> 00:04:49,530
這個小線就在這裡負責審查和每一個快遞應用過程中確實羨慕端口的過程，EMV IP。

49
00:04:49,590 --> 00:04:52,550
所以，這是什麼意思就在這裡這是什麼。

50
00:04:52,560 --> 00:04:57,680
而我去了這個簡單，但我認為你會做一些更有意義，現在，你有你的腰帶下的一些更多的經驗。

51
00:04:57,750 --> 00:05:02,990
什麼這指的是就是這個代碼正在運行的環境。

52
00:05:04,010 --> 00:05:15,910
所以，你羨慕了端口上九霄雲外可能比的過程，在她的Roku點口，也許不同的過程可能是IP肯定是。

53
00:05:16,100 --> 00:05:24,900
因此，這些都是補充說，沒有硬編碼的改變基於關閉他們在正在運行的環境的事情變量的方法。

54
00:05:24,950 --> 00:05:29,590
因此，我們可以已經把像80 80在這裡。

55
00:05:29,840 --> 00:05:31,700
但是，當然這是硬編碼。

56
00:05:31,820 --> 00:05:33,010
這不是動態的。

57
00:05:33,020 --> 00:05:41,180
這讓我們不得不在JavaScript的其實只是一個節點環境和節點響應變量。

58
00:05:41,360 --> 00:05:45,050
他們總是開始與過程D-NV這就是你如何訪問它們。

59
00:05:45,050 --> 00:05:47,600
然後將變量的名稱。

60
00:05:48,110 --> 00:06:13,340
那麼，我們要在這裡做的是有一個環境變量，將調用數據庫的養老和在Heroku上我們要設置的數據庫，你可以在這裡成為這個長長的東西，然後一切都將要做的就是基本上寫過程你是數據庫。

61
00:06:13,850 --> 00:06:19,120
這將引用您的URL給我們的環境的正確。

62
00:06:20,030 --> 00:06:21,670
然後我們會在這裡做同樣的事情。

63
00:06:21,680 --> 00:06:31,670
我們在九霄雲外數據庫您阿雷爾以及設置為蒙加爾D-B結腸削減我們本地主機，她可以Campfield 10。

64
00:06:31,670 --> 00:06:36,650
所以，再一次的想法是，我們可以創建一個我還沒有顯示你如何做一個環境變量。

65
00:06:36,650 --> 00:06:38,630
這僅僅是你如何訪問它們。

66
00:06:38,840 --> 00:06:42,950
但是，請記住這是從該應用程序之外的到來。

67
00:06:42,950 --> 00:06:49,060
這是從我們正在其上運行的代碼中的實際應用或實際環境中的服務器來。

68
00:06:49,820 --> 00:07:10,870
因此，要證明我們如何使這項工作我要去準備在這裡收出開始，我要創造環境的命令行新的環境變量，當一個類型的出口是一個新的命令，然後我要去寫它通常約定在全部大寫做我的環境變量。

69
00:07:10,880 --> 00:07:13,450
正如你可以在這裡看到的IP端口。

70
00:07:13,590 --> 00:07:16,420
所以，我們要做的數據庫。

71
00:07:16,970 --> 00:07:31,680
你們都是平等的，我們要啟動它重置等於我們要在我們九霄雲外實例上運行我們希望你們都等於該數據庫的內容。

72
00:07:32,240 --> 00:07:39,860
就這樣，然後按Enter檢查如果那是。

73
00:07:41,020 --> 00:07:46,000
要在這裡做的權利實際上就在這裡。

74
00:07:46,130 --> 00:07:49,170
取消該日誌的過程。

75
00:07:49,450 --> 00:07:50,260
爸爸羨慕。

76
00:07:50,390 --> 00:07:54,960
而這需要符合你知道數據庫。

77
00:07:56,180 --> 00:08:09,170
如果我們看到坎維10吐出這蒙加爾D-B結腸癌的等等等等本地主機背出或打印出來，那麼我們就知道，我們已經成功地建立了你知道開發數據庫。

78
00:08:09,860 --> 00:08:13,110
因此，讓我們看看會發生什麼節點。

79
00:08:13,190 --> 00:08:17,600
是的，有我們去看到它在這裡被打印出來。

80
00:08:17,690 --> 00:08:19,790
我從來沒有說過打印出本地主機。

81
00:08:19,800 --> 00:08:20,690
你可以假裝。

82
00:08:20,690 --> 00:08:24,670
我說的是環境變量數據庫你了。

83
00:08:25,080 --> 00:08:34,940
所以，現在我們需要做的是說Mangeshkar連接來處理NVI數據庫。

84
00:08:35,010 --> 00:08:48,760
您IRA然後在Heroku上，我們需要去更新數據庫，您知道是這個實驗室蒙戈巨人你們都是字符串，但我們只希望這種情況在Heroku上發生。

85
00:08:48,860 --> 00:08:52,320
我們要離開這個獨自在九霄雲外。

86
00:08:52,520 --> 00:08:56,770
因此，讓我們只是要確保它的工作這麼練聲曲重新啟動。

87
00:08:56,990 --> 00:08:57,760
大。

88
00:08:58,220 --> 00:09:08,070
讓我們去我們的正確的版本在這裡刷新，我們仍然得到本地代碼，因為我們沒有任何推代碼的Heroku當然Heroku的是不變的。

89
00:09:08,660 --> 00:09:27,170
因此，如果我們保存這個並添加並承諾說更新你IRL得到推的Heroku中號..

90
00:09:29,150 --> 00:09:46,120
如果我們嘗試和現在運行Heroku的版本，如果我就這樣結束至少如果我嘗試刷新此頁我要去，因為Heroku的是，這將是能夠找到方法研究vidette數據庫服務器有一個錯誤你知道，因為它不成立。

91
00:09:46,550 --> 00:09:58,820
所以只是告訴你，刷新可能需要一段時間，他們應該得到應用程序錯誤，雖然這是去那裡才好。

92
00:09:58,850 --> 00:10:03,060
應用程序錯誤再次，如果你真的想知道到底發生了什麼。

93
00:10:03,070 --> 00:10:13,140
這是Heroku的日誌，你可以在這裡看到我不知道，我們得到的錯誤信息是多麼有用將是誠實。

94
00:10:13,250 --> 00:10:15,450
讓我們來看看。

95
00:10:15,470 --> 00:10:24,560
這可能是那些不告訴你，你所希望的到底是什麼消息之一，但它告訴我們蒙加爾D-B有一個錯誤。

96
00:10:26,820 --> 00:10:45,310
蝦夷並沒有它沒有明確提到此數據庫你是一個問題，因為什麼是實際發生的情況是，它試圖連接到一個空字符串最有可能在技術上並不只是一個事實，即沒有數據庫的問題位於你是一個空字符串。

97
00:10:45,490 --> 00:10:49,020
所以這是一個有點意外的錯誤消息。

98
00:10:49,600 --> 00:10:58,770
所以我告訴你，雖然，問題是，我們還沒有建立一個過程，或者說我們還沒有建立在Heroku上的環境變量。

99
00:10:59,530 --> 00:11:05,070
這樣做有幾個不同的方法，如果我們去Heroku的本身，我們可以做到這一點。

100
00:11:05,200 --> 00:11:09,640
我可能會需要重新登錄這裡，我刷新頁面。

101
00:11:10,750 --> 00:11:12,170
都能跟得上我沒有必要騙回。

102
00:11:12,220 --> 00:11:13,910
這是我們的應用程序。

103
00:11:14,010 --> 00:11:22,530
那麼，如果我們進去，我們進入設置，我相信它是。

104
00:11:23,500 --> 00:11:30,420
然後繼續向下滾動，或去配置變量。

105
00:11:31,140 --> 00:11:33,230
我們可以在一個變量補充。

106
00:11:33,460 --> 00:11:39,170
因此，我們希望你的數據庫伯爵是巨大的字符串。

107
00:11:39,190 --> 00:11:43,880
我複製它，然後單擊添加。

108
00:11:45,510 --> 00:11:48,930
如果我們現在回去嘗試刷新頁面。

109
00:11:49,540 --> 00:11:52,230
它的工作原理完全確定。

110
00:11:52,260 --> 00:11:53,920
所以這是做的一種方式。

111
00:11:53,980 --> 00:12:05,050
我向您展示如何去到Heroku和添加一個鍵值對數據庫您Erlass和鍵或變量的名稱的環境變量，然後一個值。

112
00:12:05,400 --> 00:12:11,930
這是做它做的另一種方式的一種方法是通過您可以運行一個命令在命令行。

113
00:12:12,150 --> 00:12:13,330
我們可以做到這一點就在這裡。

114
00:12:13,360 --> 00:12:14,760
我有號

115
00:12:14,760 --> 00:12:24,760
J.S.支持文檔在Heroku上開這條線Heroku的配置設置冒號，然後鍵入等於價值。

116
00:12:25,420 --> 00:12:29,720
因此，如果我們想我不會真正做到這一點我就複製此第一位。

117
00:12:29,730 --> 00:12:42,210
在我不打算打進入，但我只是想告訴你這將是Heroku的配置設置歌林，然後數據庫你是L等於然後我們不得不貼，你是的。

118
00:12:42,940 --> 00:12:44,710
但是，我該怎麼做。

119
00:12:44,710 --> 00:12:59,550
所以我還沒有提到另一件事是，有對使用環境變量另一個很好的理由是，有隱藏在那裡他們沒有接觸到不管它是開發人員，如果你把這個代碼了良好的樞紐。

120
00:12:59,710 --> 00:13:06,340
我們不想讓我們的數據庫，你RL在這裡，當然，或者如果你已經知道我沒有數據庫你。

121
00:13:06,360 --> 00:13:09,370
但是，這顯然不是一個真正的應用程序。

122
00:13:09,490 --> 00:13:24,110
但是，如果這是即使它，我不希望我的公開數據，或者我的數據庫你出去大家誰看代碼的開源應用程序或我的代碼或者開源部分的實際應用。

123
00:13:24,580 --> 00:13:33,250
因此，通過這裡有這一行蒙加爾開始連接處理過程的NV點數據庫，您AROW這不再是一個問題。

124
00:13:33,790 --> 00:13:43,230
所以，這是所有開發者會看到或任何瀏覽上回家的代碼，他們將不得不建立自己的數據庫。

125
00:13:43,240 --> 00:13:46,490
你們都在使用環境變量。

126
00:13:47,050 --> 00:13:47,770
好。

127
00:13:48,190 --> 00:13:49,850
因此，讓我們回顧一下我們所做的。

128
00:13:49,990 --> 00:13:58,870
我們首先遇到的問題一個數據庫的開發和生產共享數據庫的問題，以解決這個問題。

129
00:13:58,890 --> 00:14:08,910
我們建立了我們的數據庫URL環境變量本地雲九對同一個變量兩個不同的值。

130
00:14:09,190 --> 00:14:17,360
然後我們訪問的變量使用ENVI數據庫，您IRL，我們連接到該進程的環境變量。

131
00:14:17,380 --> 00:14:19,120
因此，我們有兩個結果。

132
00:14:19,480 --> 00:14:25,050
有一件事我會提的是，這是值得設置一個默認值。

133
00:14:25,500 --> 00:14:31,640
所以，讓我們說，我有點擰我的應用程序，如果我重新啟動計算機。

134
00:14:31,650 --> 00:14:49,790
我不知道我這個重置工作空間在我的環境變量消失或我送這個給別人，我希望他們有我不知道，他們可以利用這只是為了一個默認的數據庫，這樣的代碼沒有按“T徹底打破，如果我沒有明確設置起來。

135
00:14:49,890 --> 00:14:55,480
我能做的就是增加少許備份，以便我們將做一個變量，我們就調用它。

136
00:14:55,650 --> 00:15:03,710
你們都是平等的，我們要做的過程中，你是真正的或數據庫啟動。

137
00:15:04,690 --> 00:15:14,550
然後我們把一些你在那裡讓我們做什麼，你都已經ELLYARD失去了它。

138
00:15:15,230 --> 00:15:16,850
你在這。

139
00:15:17,830 --> 00:15:20,770
因此，這將只是一個備份。

140
00:15:20,800 --> 00:15:33,220
如此反复這裡發生了什麼是它不是強制性的不改變的功能，但如果由於某種原因，我的環境變量得到搞砸了，或者根本不存在。

141
00:15:33,220 --> 00:15:42,620
而不是破壞碼會發生什麼是，這您所有變量它會如果存在等於環境變量。

142
00:15:43,300 --> 00:15:50,410
如果它雖然是一個空字符串，或者不存在，那麼這將是等於這個這只是我們的備份。

143
00:15:50,400 --> 00:15:54,470
在這種情況下，在九霄雲外也有同樣的事情。

144
00:15:54,610 --> 00:15:56,000
這真的不會再強制性的。

145
00:15:56,020 --> 00:16:00,410
這只是一種很好的做法有萬一出事了。

146
00:16:00,790 --> 00:16:04,600
不過說真的，我只是把它展示給你，因為這是很經常可以看到這一點。

147
00:16:04,950 --> 00:16:05,550
好。

148
00:16:05,800 --> 00:16:20,530
所以，那種長篇大論或接近這一沒有迂迴方式，但它全部歸結為，我們希望不同的數據庫的過程，在vidette數據庫您IRL是我們如何從一個節點的應用程序訪問環境變量的事實。

149
00:16:20,660 --> 00:16:26,770
你想清楚，雖然環境變量不是一個節點事物或一個javascript的事情。

150
00:16:26,770 --> 00:16:41,850
Ruby應用程序導軌都可以訪問的環境變量應用Python應用程序，並在所有他們看起來比較簡單的類似於此，它只是碰巧在節點你像Ruby等語言編寫的過程中六。

151
00:16:41,880 --> 00:16:47,040
你會經常看到這樣的你知道ENV數據庫。

152
00:16:47,710 --> 00:16:55,930
所以這是一個普遍的概念，它不是一個節點具體的東西，它是跨各種應用普遍為好。

153
00:16:55,920 --> 00:17:01,200
你不只是使用這個數據庫的URL使用它任何時候你要。

154
00:17:01,310 --> 00:17:03,770
它看起來像這裡一個錯字。

155
00:17:03,790 --> 00:17:06,730
無論哪種方式，應該是localhost。

156
00:17:06,820 --> 00:17:15,380
使用這個你想有你不同的環境開發與生產之間的不同信息的任何時間。

157
00:17:15,390 --> 00:17:22,530
當你想隱藏或從別人的模糊信息和獲得幫助的情況下也可使用此。

158
00:17:22,540 --> 00:17:33,350
所以，如果你有內部應用程序的您的PayPal或Strype信用卡處理API的信息，因為你需要它的代碼。

159
00:17:33,570 --> 00:17:37,700
那麼，如果你想分享你目前是如何被你顯然不希望被推動這件事。

160
00:17:37,810 --> 00:17:43,760
所以你可以做的是創造一個環境變量，並做類似的過程。

161
00:17:43,820 --> 00:18:11,050
伊恩六死了超級敏感信息，這是一個辦法來解決想分享你的代碼的這個問題讓公眾，也不想分享你的超級敏感信息，其中有人可以把你的API密鑰並運行了成千上萬的法案和數千美元，實際上發生的一些大公司都是關於治安好多了。

162
00:18:11,050 --> 00:18:28,960
所以亞馬遜舉例來說，如果你有你的亞馬遜API密鑰或AWOS信息獲取HOBE您的Amazon Web Services Web服務的信息，他們居然會知道，他們會向您發送一條消息，說你需要立即採取下來或將要關閉它。

163
00:18:28,990 --> 00:18:32,170
有人可以收取成千上萬的美元來。

164
00:18:32,290 --> 00:18:38,110
他們可以使用您或您的基本帳戶來運行了，他們不必支付巨額費用。

165
00:18:38,430 --> 00:18:40,810
比較經常發生。

166
00:18:40,810 --> 00:18:48,640
我聽說有我的這一問題，一些學生和承諾，但肯定我以前聽說過這一點。

167
00:18:48,630 --> 00:18:49,270
好吧。

168
00:18:49,270 --> 00:18:52,300
因此，處理羨慕的是我們如何獲取環境變量。

169
00:18:52,330 --> 00:18:58,000
我們有兩個數據庫建立營地現在已經部署了兩個不同的數據庫。

170
00:18:57,990 --> 00:19:01,290
他們不同意這是我們想要的任何信息。
