2014-02-18 56 views
0

我目前在應用程序中實現了多租戶邏輯,雖然這很簡單,但我現在已經成爲所有變量的長期存儲難題。變量來自Heroku database_url在Rails中管理數據庫變量

def env_variables 
    { 
    host: ENV.fetch("#{@company_id}_DB_HOST"), 
    port: ENV["#{@company_id}_DB_PORT"], 
    username: ENV.fetch("#{@company_id}_DB_USERNAME"), 
    password: ENV.fetch("#{@company_id}_DB_PASSWORD"), 
    database: ENV.fetch("#{@company_id}_DB_DATABASE"), 
    } 
end 

從ENV中獲取相關變量非常簡單,但是管理40-50個env變量可能會很痛苦。

的選項,因爲我看到他們

  1. 集ENV變量在ansible腳本。我們已經做了一些事情。
  2. 將數據庫變量存儲在項目中的文件中。可能更容易管理,但必須在生效之前部署。

我是否缺少一些很棒的解決方案?人們通常如何去存儲更大量的數據庫變量?

回答

0

ENV

雖然我敢肯定,你可以將數據存儲在一個文件,我想親自看看他們留在ENV瓦爾(可能與Figaro

原因是ENV變量存儲在堆棧的更深處(在OS中),因此實際上並不是由Rails本身持有的。如果公司ID是不會改變的(他們是不是動態的),我只是把它們放入一個費加羅application.yml文件:

#config/application.yml 
156_DB_DATABASE: "db" 
etc 
+1

爲了簡便起見我結束了使用Heroku的-URL數據庫配置並構建一個解析它的方法,但將URL與其餘的ENV-config一起存儲。 – Frans