我一直在將幾個 Rails 應用程式從 Rails 3.2.5 更新到 Rails 7。在將所有這些應用程式遷移和部署后,一個應用程式突然拒絕啟動其開發中的 Web 服務器 (puma)。
rails server一旦我從 database.yml 中洗掉生產資料庫詳細資訊或更改其生產資料庫憑據,我就可以讓它在開發中運行
(1)
database: <%= Rails.application.credentials.database[:name-database] %>
username: <%= Rails.application.credentials.database[:username-database] %>
password: <%= Rails.application.credentials.database[:password-database] %>
至
(2)
database: <%= Rails.application.credentials[:name-database] %>
username: <%= Rails.application.credentials[:username-database] %>
password: <%= Rails.application.credentials[:password-database] %>
在所有其他 Rails 應用程式中,第一個選項是有效的。以開發模式啟動的應用程式的 rails.application.credentials 和未啟動的應用程式之間的唯一區別是,未啟動的應用程式在 production.yml 中只有 secret_key_base 和資料庫“范圍” .enc
secret_key_base: very_long_string
database:
name-database: a
username-database: b
password-database: c
而在正在運行的應用程式中,我至少有另一個“范圍”:
secret_key_base: very_long_string
something:
x: "x"
y: "y"
z: "z"
database:
name-database: a
username-database: b
password-database: c
有誰知道發生了什么?先感謝您。這很奇怪,因為我確信它以前有效。
uj5u.com熱心網友回復:
我發現,當我將語法更改為:
production:
database: <%= Rails.application.credentials.name-database %>
username: <%= Rails.application.credentials.username-database %>
password: <%= Rails.application.credentials.password-database %>
rails s開始開發。
經過進一步研究,我發現您不能僅在生產中指定您的憑據。
rails credentials:edit --environment production
如果您為一個環境限定憑證,則需要限定所有環境。那是無處寫的。同樣:您必須為所有環境創建憑據檔案:
rails credentials:edit --environment development
rails credentials:edit --environment test
rails credentials:edit --environment production
就我而言,在遇到問題的應用程式中,我僅在生產中使用憑據,并依賴環境變數進行開發和測驗。出于這個原因,我只有用于部署的生產憑據。在為所有環境創建憑據后,即使我之后不使用它們,應用程式也會在開發和生產中啟動。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/495324.html
