管理 Heroku 的生產和登臺環境

每個 Heroku 應用程式至少在兩個環境中執行:Heroku(我們稱之為生產)和本地機器(開發)。如果有多個人正在使用該應用程式,那麼你將擁有多個開發環境 - 通常每臺計算機一個。通常,每個開發人員還將擁有執行測試的測試環境。不幸的是,隨著環境變得不那麼相似,這種方法就會崩潰。例如,Windows 和 Mac 都提供與 Heroku 上的 Linux 堆疊不同的環境,因此你無法始終確保在本地開發環境中執行的程式碼在將其部署到生產環境時的工作方式相同。

解決方案是使分段環境儘可能與生產類似。這可以通過建立託管登臺應用程式的第二個 Heroku 應用程式來實現。通過暫存,你可以在影響實際使用者之前,在類似生產的設定中檢查程式碼。

從頭開始

假設你在本地計算機上執行了一個應用程式,並且你已準備好將其推送到 Heroku。我們需要建立遠端環境,分段和生產。為了養成先推進升級的習慣,我們將從這開始:

$ heroku create --remote staging
Creating strong-river-216.... done
http://strong-river-216.heroku.com/ | https://git.heroku.com/strong-river-216.git
Git remote staging added

預設情況下,heroku CLI 使用 heroku git 遠端建立專案。在這裡,我們使用 –remote 標誌指定一個不同的名稱,因此將程式碼推送到 Heroku 並對應用程式執行命令看起來與普通的 git push heroku master 略有不同:

 $ git push staging master
...
 $ heroku ps --remote staging
=== web: `bundle exec puma -C config/puma.rb``
web.1: up for 21s

一旦你的暫存應用程式啟動並正常執行,你就可以建立生產應用程式:

$ heroku create --remote production
Creating fierce-ice-327.... done
http://fierce-ice-327.heroku.com/ | https://git.heroku.com/fierce-ice-327.git
Git remote production added
$ git push production master
...
$ heroku ps --remote production
=== web: `bundle exec puma -C config/puma.rb
web.1: up for 16s

有了這個,你就可以像兩個獨立的 Heroku 應用程式一樣執行相同的程式碼庫 - 一個分段和一個生產,設定相同。請記住,你必須指定你將在日常工作中使用哪個應用程式。你可以使用標記’–remote’或使用 git config 指定預設應用程式。