啟動 rails server 遇到了這個錯誤嗎?
ActiveRecord::ConnectionNotEstablished
No connection pool with id primary found
這個問題通常是,Rails 的 ActiveRecord 在初始化的時候讀不到你的數據庫(database),可以先檢查 config/database.yml
這隻檔案是否存在?
那麼最近很多同學遇到關於 cp config/database.yml.example config/database.yml的問題
覺得這個是屬於安全性的觀念,來寫一下好了
先了解 .gitignore
Git 在項目上傳的時候,通常我們會對整個項目做 tracking(追蹤),所以當追蹤之後只要有任一檔案新增或是變動,Git 都會紀錄,由於我們很常使用 git add .
,所以都會把這次「所有」變動的項目加入 commit。
那麼,如果有很機密的檔案不能上傳,怎麼辦?例如部屬到機器上的資訊,包括 IP, 數據庫帳號密碼,這些東西如果上傳到 Github 的公開專案,豈不是全世界都看光光了,可以任意進出你的機器或數據庫。
因為我們的 Rails 專案底下掌管三種環境(Production, Development, Test)的數據庫資訊都會放在 config/database.yml
所以將我們要過濾掉,不得上傳的檔案路徑,寫進 .gitignore
裡面,他就會過濾這隻檔案,不給予追蹤了
...
...
config/database.yml
...
置放模版
那麼這時候如果你拉下來的專案,沒有了 config/database.yml
,我們又不會特地去背這個,卻又是 Rails Project 運行的必要檔案,怎麼辦?
所以我們會寫一隻「模版」放在專案裡面,但是又要能夠清楚表達他是什麼樣的檔案,又要能被追蹤(因為我們已經先屏蔽了 config/database.yml),所以我們就會做一隻模版放進去
config/database.yml.example
config/database.yml.template
這兩種都可以,或是你有更好的寫法。
那麼經歷以上兩個說明,就可以完整解釋為什麼要在作業 clone 下來運行前輸入這個指令了
cp config/database.yml.example config/database.yml
cp = copy = 複製的意思
cp a.file b.file
解釋:複製 a.file 檔案,並把複製出來的檔案命名為 b.file,且在同一個目錄